Система Linux абсолютно не реагує з великою кількістю вільного місця для обміну


2

У мене є сервіс .NET (Core 2.0), який я перемістив з Windows до екземплярів Linux на AWS. Екземпляри мікро-з 1 Гб оперативної пам’яті.

Я додав 1Gb простору swap до екземпляра Linux, а також встановив swappiness = 100, але сервер зависає, коли фізична пам'ять заповнена. Сам процес сповільнюється майже до зупинки і навіть натискання клавіші ENTER на bash займає іноді 10 секунд, щоб з'явився новий рядок.

Бігаючи, topя бачу вільну пам'ять зазвичай 10, 20 Мб. Процес, що використовує 800 Мб + оперативної пам’яті, і своп завжди майже порожній, з використанням макс. 20 Мб. Навіть заїжджаючи туди на годину, це не змінило більше.

Я можу бачити, що кредити на дисках і центральних процесорах на AWS майже на 100%, тому це не обмежує використання ресурсів. Також є близько сотні таких примірників, і я кілька разів їх замінював, поведінка завжди однакова, тому це не виглядає як погана проблема екземпляра .

Мене хвилює те, що цього не сталося у Windows, а екземпляри Linux використовували приблизно на 200 Мб менше пам’яті для базової системи.

Чи є якісь налаштування, які мені потрібно налаштувати, крім заміщення, щоб змусити Linux переміщати більше пам'яті?

Редагувати: Swap налаштований правильно через cloud-init, і він переживає перезавантаження:

Налаштування:

fallocate -l 1024M /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
sysctl vm.swappiness=100

free -m після завантаження:

             total       used       free     shared    buffers     cached
Mem:           993        232        760          0          7        152
-/+ buffers/cache:         72        921
Swap:         1023          0       1023

Здається, що ви не налаштували свій своп правильно: запустіть, free -hщоб перевірити кількість налаштованих свопів; або може бути, що і ваша пам'ять, і swap повні (1 Гб є досить малим для файлу swap, особливо якщо у вас обмежена пам'ять). Це посилання розповідає, як налаштувати його для Ubuntu, але я думаю, що це достатньо основна функція, що вона буде схожа на інші аромати Linux.
AFH

Це файл обміну. Система розпізнає своп. Це просто не використовувати майже нічого з цього. Я додам ці деталі до питання.
Натан

Залежно від того, як Linux отримав би доступ до цієї пам’яті, може бути занадто пізно до часу її спроби. Ви можете поглянути на Azure. Якщо ви збираєтеся запускати .NET програми, це може бути більш підходящим для вас.
Даніель Б

У вас є світлодіодний доступ до диска? Якщо це постійно горить, коли система замерзає, можливо, ваше swappinessзначення занадто високе, це означає, що програми, які часто отримують доступ, можуть замінятися і виключати інші програми. Спробуйте навпаки крайній край і встановіть swappiness=10( sudo sysctl vm.swappiness=10на тимчасову зміну), щоб побачити ефект: це повинно зупинити часто називаються процеси від заміни.
AFH

Я намагався з кількома значеннями від 0 до 100, 100 було найкращим. Маючи менше 60, я міг ледве SSH у ВМ. Запускається лише 1 процес, більше нічого. Це екземпляр AWS, але ні, на графіку моніторингу немає активності диска.
Натан

Відповіді:


2

Я знайшов справжнє питання. Додаток запущено всередині докера, і AWS навмисно блокує обмін використанням всередині контейнерів ECS чомусь. Цей блок не вплинув на Windows, оскільки ми раніше не використовували ECS для управління докер.

Після розмови з їх підтримкою вони не підтримують своп в контейнерах і не знають, коли вони будуть. Отже, мені доведеться вийти із системи ECS та керувати докером самостійно.


Ви можете прийняти власну відповідь, варто було б доки, оскільки це щось, що може зацікавити інших!
djsmiley2k

1

Що ж, ваша помилка може бути насправді зовсім невеликою. Це високе значення заміщення спричинить проблеми з деякими конфігураціями ОС. Спробуйте таке значення, як 15. (Просто зауважте: змусити вашу систему віддати перевагу свопінгу - жахлива ідея. Вашій системі потрібно використовувати фактичну оперативну пам’ять, щоб нормально функціонувати. перед тим, як використовувати своп, 15, що 85% оперативної пам’яті потрібно використовувати перед розділом SWAP.])

Крім того, як ви додали місця для заміни? Якщо ви просто змінили конфігурації і не створили новий розділ, або залишили помилки у вашому файлі / etc / fstab, ви не зможете використовувати swap, і все пекло порушить використання, коли система намагається записати щось, що там немає, або він не може написати (або станеться щось цікавіше). Я перебив шлях більше ніж один за допомогою цих методів.


Помилки немає. Підкачка налаштована належним чином, і система використовує деякі з них. Я також спробував із багатьма значеннями заміщення раніше, від 0 до 100. При меншій ніж 60 ОС навіть не заважає використовувати розділ swap. З 100 він міняє 20mb, і я можу використовувати ssh без надто великих проблем.
Натан

Можливо, я це перевернув, але не думаю, але у мене дислексія.
Ерік
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.