У меня есть сайт в DigitalOcean с CentOS 6.5.
Как уже отмечалось в другом месте, серверы DigitalOcean по умолчанию настроены без какого-либо свопа, и мне интересно, следует ли мне его добавить.
Я знаю об этом достаточно, чтобы думать, что ответ - «ну, конечно», но на самом деле у меня нет оснований выходить за рамки этого.
Будем очень признательны за любые советы в этой области, касающиеся DigitalOcean или нет.
Есть ли причина НЕ иметь файл подкачки в CentOS?
Да:
У вас есть некоторый тип горизонтального масштабирования, который увеличивает количество серверов в зависимости от использования ими памяти, что исключает возможность использования подкачки.
У вас есть особые требования к производительности, что означает, что вы не можете разрешить вашей программе использовать swap для обработки, поскольку он значительно медленнее, чем память, поэтому вместо использования swap вы выбираете внимательно отслеживать использование памяти и увеличивать память по мере необходимости.
Моя система просто умрет при первой серьезной загрузке пользователей и потребностями памяти?
Если вы не знаете, какую нагрузку будет испытывать ваш сервер, если у вас недостаточно памяти и нет места для подкачки, ваше приложение остановится.
Спасет ли меня своп от этого, но только за счет неприятного снижения производительности?
Верный.
Что именно происходит, когда приложение останавливается? Какое приложение останавливается?
Если бы у меня было 3 процесса, и у 1 происходила утечка памяти, все 3 умерли бы или 1, который протекал, умер?
Сможет ли один заставить умереть двух других?
Подумайте об этом так:
Если вы создадите программу и скажете ей заполнить переменную бесконечным количеством целых чисел, очень скоро это приложение обнаружит ошибку памяти и завершится.
Это то же самое. Какое бы приложение ни пыталось получить доступ к большему объему памяти для своих операций, оно потерпит неудачу. Итак, если у вас остался 1 байт, и ваше приложение создает 32-битное целое число, вам нужно 2 байта, операция завершится неудачно, потому что недостаточно памяти, и в зависимости от того, насколько хорошо приложение обрабатывает ошибки памяти, оно либо исправит себя, либо завершится.
То же самое касается сразу 3 приложений. Если по совпадению все они запрашивают больше памяти, когда в системе остается только 1 байт памяти, технически все они должны выйти из строя сразу.
Кто-нибудь может поправить меня по этому поводу, если увидит ошибки.
Will swap save me from that, but only by imposing an unpleasant performance hit?
Ознакомьтесь с этой страницей, посвященной настройке подкачки: http://www.scottalanmiller.com/linux/2012/09/03/controlling-swappiness-in-linux/
Вы можете изменить свою подкачку, чтобы ваша система не использовала слишком часто пространство подкачки и, таким образом, не снижала производительность.
Сначала установите sysstat (если он еще не установлен) и отслеживайте использование ресурсов в течение нескольких дней. Запустите «sar -r» и часто отслеживайте использование памяти. В большинстве случаев использование памяти составляет около 90%, смотрите столбцы «kbcached» и «kbbuffers». Если они используют большую часть памяти, все в порядке, поскольку это означает, что приложения кэшируются. Но если эти значения меньше, это означает, что кэширование меньше из-за более фактического использования памяти, что также может указывать на то, что вашим приложениям требуется больше оперативной памяти. Таким образом, вы можете увеличить оперативную память или настроить пространство подкачки.
Теперь, что касается обмена, я считаю, что цифровые океанические диски находятся на SSD. Если это так, настройте файл подкачки, и вы в большинстве случаев не увидите снижения производительности, поскольку твердотельные накопители работают быстрее, чем жесткие диски.
HTH.