Как я выжил на маленьком vds. Продолжение.
Продолжим. (Начало тут.)
Следующим этапом стало желание оградиться от всепожирающего апача. Эксперименты с легковесными веб-серверами оставим на потом. Ибо, правильно, — лениво. Да и потом, неужели могучий и универсальный Apache нельзя заточить под себя?
Про то, что нужно чистить ненужные модули я и не говорю. Но я просто и без затей полез в секцию Multi-Processing Modules. На freebsd это файл /usr/local/etc/apache22/extra/httpd-mpm.conf. Нужно проверить, чтобы соответствующая строка в httpd.conf была раскомментирована. Из многообразия prefork-worker-etc, как учили отцы, нужно выбрать нужное:
apachectl -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
Значит, правим prefork MPM. Описание параметров вовсе не секрет, есть даже на русском: http://compiling.ru/optimization/apache-prefork/.
В нашем случае StartServers делаем равным 1. Нечего жировать с самого старта. Запас свободных воркеров от 2 до 5:
MinSpareServers 2
MaxSpareServers 5
Дальше немного практического расчёта. Уже не помню точно сколько памяти занимал один воркер, ориентировался на размер процесса непосредственно после запуска апача.
Допустим, 5 процессов по 8-10 Мб, как раз впишется в условия системы.
Другими словами, жёстко ограничиваем MaxClients числом 5, и предлагаем другим http-запросам немного повисеть в очереди.
Немного позже был протюнингован параметр MaxRequestsPerChild до 10. Из соображений держать размер одного воркера в разумных пределах.
В совокупности с уменьшенным Timeout до 60, и
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
уменьшается время, выделяемое для обработки запросов одного клиента, позволяя веб-серверу обслужить очередь новых страждущих.
В итоге, с учётом замечательного mod_evasive, Apache прекрасно себе поживает, потребляя отведённые ему 50 Мб.
Вернее жил. Когда на все сайты vds ходили та же группа энтузиастов из 3-5 человек одновременно. В процессе оптимизации, на сервер было докуплено ещё 32 Мб оперативной памяти, для успокоения души. Но справедливости ради, стоит сказать что для той нагрузки (3-5 чел on-line) утилизация по памяти составляла порядка 60%, т.е. в 64 Мб я вписывался.
Конечным эффектом из всей этой оптимизации является стабильная работа сервера при разумных нагрузках. Во всяком случае, нет необходимости держать руку на пульсе и постоянно перезапускать mysql.
Некоторое время назад было зафиксировано более 250 уникальных обращений к сайтам сервера. Цифра конечно не Бог весть какая, но маленький vds с честью справился с нагрузкой. Размеры воркера httpd конечно выросли — в среднем до 17 Мб. Что с текущими настройками даёт около 80Мб резидентной памяти. А ещё MySQL, ещё Bind, и совсем немного под ОС. И ничего — прекрасно всё уживается. (На 96 Мб оперативы)
В следующий раз расскажу как поднимал DNS сервер на бесплатном общедоступном ns-сервере.
Popularity: 2%
Этот материал находится на сайте http://compiling.ru
Оставьте свой отзыв