Назад | Перейти на главную страницу

Настройка Apache для сайта среднего размера

У меня проблемы с конфигурацией apache. Прямо сейчас nginx находится впереди на apache в качестве обратного прокси, обслуживая статические активы, а затем передавая запросы php в apache. Apache использует mod_php. У нас есть пользователи, но сайт медленно растет, поэтому я точно знаю, что Mysql здесь не виноват. Сайт не тяжелый для базы данных, это тяжелый веб-сервис.

Сайт медленно растет, мы сделаем около 430 000 уникальных посетителей в этом месяце, и одновременно на нем может быть от 80 до 230 человек, но количество запросов в секунду никогда не превышает 8.

Кажется, что Apache удерживает память, что примерно через неделю вызывает сбой сервера и требуется перезагрузка. Сервер представляет собой линодную 8-ядерную машину ubuntu 12.04 объемом 8 ГБ.

Это текущая конфигурация. Мы используем модуль Prefork прямо сейчас:

Timeout 15
KeepAlive Off
MaxKeepAliveRequests 1000
KeepAliveTimeout 5
<IfModule mpm_prefork_module>
    StartServers          5
    MinSpareServers       5
    MaxSpareServers      10
    MaxClients          256
    MaxRequestsPerChild   500
</IfModule>
HostnameLookups Off

Если вам нужна дополнительная информация, дайте мне знать. Получим ли мы меньшее использование памяти и лучшую производительность, отказавшись от модуля prefork?

Что касается планирования мощности: Как вы проводите нагрузочное тестирование и планирование емкости веб-сайтов?

Что касается утечки памяти, Apache не должен давать утечку памяти, если дочерние элементы правильно завершают работу после 500 запросов. Возможно, в вашем PHP-коде (и в библиотеках, от которых он зависит) есть нюанс, из-за которого дочерние элементы не завершают работу должным образом или не потребляют чрезмерное количество памяти.

Попытайтесь найти процессы, у которых использование памяти или время создания значительно больше / раньше в прошлом, чем у других. lsof -pPID может дать вам подсказку, если вам повезет, но гораздо более вероятно, что впереди вас ждет некоторая неотработанная отладка.

(это, конечно, при условии, что виноват Apache - я считаю само собой разумеющимся, что вы каким-то образом это доказали)