У меня проблемы с конфигурацией 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 - я считаю само собой разумеющимся, что вы каким-то образом это доказали)