Недавно мой друг сказал мне, что было бы неплохо отключить своп на веб-серверах Linux с достаточным объемом памяти. Мой сервер имеет 12 ГБ и в настоящее время использует 4 ГБ (не считая кеш и буферы) при пиковой нагрузке.
Его аргумент состоял в том, что в нормальной ситуации сервер никогда не будет использовать всю свою оперативную память, поэтому единственный способ, с которым он может столкнуться с ситуацией OutOfMemory, связан с некоторой ошибкой / ddos / etc. Таким образом, если своп отключен, системе не хватит памяти, что в конечном итоге приведет к сбою памяти программы (скорее всего, процесса веб-сервера) и, возможно, некоторых других процессов. В случае замены включается наон потребляет оперативную память и подкачку и в конечном итоге приводит к тому же самому сбою, но перед этим он разгрузит важные процессы, такие как sshd, для подкачки и начнет выполнять много операций подкачки, что приведет к значительному замедлению. Таким образом, когда система ddos может перейти в совершенно непригодное состояние из-за огромных задержек, и я, вероятно, не смогу войти в систему и завершить процесс веб-сервера или запретить весь входящий трафик (все, кроме ssh).
Это правильно? Я что-то упускаю (например, тот факт, что раздел подкачки очень полезен, даже если у меня достаточно ОЗУ)? Должен ли я выключить его?
Ответы:
Я бы сказал, что это зависит от вашего варианта использования, а остальные ответы достаточно хорошо это описали. В конце концов, 4G свопа - это дешевый способ купить немного безопасности. И я чувствую, что из-за этой дешевизны люди не хотят ее отключать.
Но позвольте мне ответить риторическим вопросом. Если деньги не проблема, и у вас есть выбор между двумя системами - одна с 12G оперативной памяти и 4G подкачки, а другая с 16G оперативной памяти и без подкачки - какую из них вы бы выбрали? К сожалению, большинство людей все равно ответили бы, что они выберут 16 ГБ ОЗУ и все равно добавят 4 ГБ подкачки, что мне не хватает.
И с другой стороны, я лично нахожу систему подкачки хуже, чем сбойная система. В случае сбоя системы резервный сервер запускается гораздо быстрее. И в активно-активной (или в настройке с балансировкой нагрузки) сбойная система будет выведена из ротации гораздо раньше. Снова победа для системы без обмена.
источник
НЕ рекомендуется отключать своп, даже если у вас достаточно памяти. Если вашему серверу нужно больше памяти, но он не получил его, он потерпит крах. Тем не менее, это может быть предотвращено (в некоторой степени), когда у вас есть область подкачки.
Да, производительность вашего сервера будет ухудшаться при использовании подкачки, но, по крайней мере, он будет работоспособным и доступным. Затем вы можете запланировать добавление дополнительной памяти при необходимости, если ваш сервер начинает использовать своп.
Я нашел эту страницу, говоря о свопе. Посмотрите на 3-й раздел.
Вместо того, чтобы отключить своп, вы можете контролировать своппинг .
источник
Нет, это не очень хорошая идея. «какой-то процесс сошел с ума» означает, что вы должны были предварительно позвонить
ulimit -d
во время или до времени создания процесса, чтобы установить ограничение на объем памяти сегмента данных процесса - и, возможно, ограничение на количество потоков
ulimit -T
за процесс. ulimit твой друг. Пожалуйста, ознакомьтесь с одним из руководств по настройке памяти, прежде чем выключать своп. Вы также можете изменить параметры ядра на некоторые вещи, чтобы попытаться справиться с атаками DOS или плохими программами.
Посмотрите на это так: общая память в вашей системе - RAM + swap. Если у вас есть 12 ГБ подкачки, вы просто эффективно сокращаете емкость системной виртуальной машины вдвое, отключая подкачку. Плохая идея. На самом деле это не спор, это просто чтение того, что другие люди знали из прошлого плохого опыта в течение многих лет. Возможно, вашему другу тоже нужно почитать.
источник
Как уже говорили другие, вы можете эффективно остановить свой сервер, используя swap, за исключением случаев, когда это абсолютно необходимо, используя параметр «swappiness». Это контролирует, насколько агрессивно ядро будет выгружать страницы памяти.
Вы можете увидеть, что в данный момент установлено с:
и вы можете редактировать его «вживую» с помощью (как root):
и чтобы оно сохранялось, добавьте следующее в /etc/sysctl.conf:
источник
Еще одна хорошая вещь, которую вы можете сделать, это зайти в оперативную память, используя zRAM. Я думаю, что это отличная идея! Для производительности это все равно что вообще не иметь подкачки, но также предотвращает сбои, когда система очень загружена!
Посмотри на это:
http://www.webupd8.org/2011/10/increased-performance-in-linux-with.html
Мой опыт: на этой машине, где я сейчас пишу, я отключил своп, потому что у меня 4Гб ОЗУ (в 2009 году это было много!). Я испытал только пару проблем, одна из которых открылась как 127 картинок одновременно по ошибке!
НО .. это рабочая станция, и я могу позволить себе перезагрузиться, если она зависнет. На сервере я думаю, что лучше иметь своп, и swap-in-RAM звучит хорошо для меня.
источник
Как уже было сделано совершенно ясно, это не очень хорошая идея. Если ничего другого, своп дает вам передышку, когда все не совсем нормально. Например, в одной системе, которую я смотрю, которая обычно имеет всего несколько посетителей в день, был огромный всплеск трафика, вызванный упоминанием страницы в журнале. Это привело к тому, что веб-сервер впервые использовал пространство подкачки с момента его ввода в эксплуатацию. Без этого пространства подкачки дела пошли бы не очень хорошо.
источник
Не хорошая идея. Вы можете определить 2 файла подкачки с различным приоритетом. Один меньший, который используется, и один больший, который будет использоваться в случае первого заполнения.
Кроме того, vm.swappiness может помочь вам контролировать интенсивность замены диска.
источник
Если вы ввели значение от 0 до vm.swappiness, это не обязательно означает, что система не будет меняться. Это параметр, определяющий, насколько агрессивной будет тенденция керна к обмену, но он не отключает обмен.
Опять же, обмен это не плохо, но побои есть. Посмотрите на данные sysstat, и это должно дать вам хороший указатель на них.
источник