2

У меня есть сервис .NET (Core 2.0), который я переместил из Windows в Linux на AWS. Экземпляры микро с 1 Гб оперативной памяти.

Я добавил 1 ГБ пространства подкачки в экземпляр 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

2 ответа2

2

Я нашел реальную проблему. Приложение работает внутри докера, и AWS по какой-то причине намеренно блокирует использование свопа в контейнерах ECS . Этот блок не влиял на окна, потому что раньше мы не использовали ECS для управления докером.

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

1

Ну, ваша ошибка может быть довольно маленькой. Такое высокое значение перестановки приведет к проблемам с некоторыми конфигурациями ОС. Попробуйте значение как 15. (Просто примечание: заставить вашу систему предпочесть swap - ужасная идея. Ваша система должна использовать реальную оперативную память для нормального функционирования. [в случае, если вы не знали об этом или полностью изменили его, swappiness - это% свободной памяти без использования swap, поэтому 15 означает, что 85% RAM должно быть использовано до раздела SWAP.])

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .