Как побороть проблемы с производительностью LAMP сервера?
Здравствуйте. Есть два мощных физических сервера со связкой LAMP, на Debian. Характеристики 32Gb ram, Intel Xeon E3-1245 Quadcore, SATA HDD. Настройки апача, mysql стандартные (кроме пары мелочей).
На первом крутится десяток самописных сайтов, с посещаемостью примерно 5-10к в сутки.
Второй выделен под отдельный сайт, с бОльшим количеством посещений. Со второго сервера, на первый идет обращение к БД несколько раз в секунду (подключение напрямую).
Периодически, сайты не открываются. В день такое бывает по многу раз. Браузер пытается загрузить страницу, потом пишет что невозможно. Со вторым сервом такие же проблемы (Возможно это связано?).
Пинг при этом идет нормально. Я так понимаю, это может быть или БД, или файловая система.
Я абсолютно не знаю, что делать, с чего начать и куда копать. Как можно выяснить, какой из сайтов в этом виноват? Или узнать в процентах потребление ресурсов каждым.
Если нужна дополнительная информация, предоставлю. Заранее благодарен.
Установка nginx не помогла.
В момент недоступности сайтов снял данные с apache server status: yadi.sk/d/3ZWxkjUgGQMgf
Судя по точке перед пунктом расхода CPU, он не загружен апачем и на 1%. Количество воркеров апача не превышает настройки.
Появилось много "W", до "зависания" их было меньше, но это скорее следствие, а не причина.
В логах Apache error.log только PHP Notice, в access.log тоже ничего странного в эти моменты.
Выяснил, что такие провалы доступа происходили из за переполнившейся папки /tmp . После переименования старой папки /tmp и создания новой, пустой - все стало замечательно. Настроил по крону удаление файлов старше 24 часов из нее. Теперь ничего не переполняется. Странно, что дебиан сам периодически ее не чистил.
В процессе узнал про nginx, inode, пакеты мониторинга и почерпнул много информации о правильной настройке apache и nginx.
Всем большое спасибо за помощь. Особенно @Kerman и @bondbig . Всем удачи!
БД тут не при чём. Если бы отваливалась БД, то апач отдавал бы ошибку соединения с базой. Файловая система тоже ни при чём. Проблемы с ФС сразу были бы видны в логах и при старте.
Более вероятная причина в сети, к которой оба сервера подключены. Просто тупо не проходят HTTP пакеты в какой-то промежуток времени. Или с файерволлом беда. Нужно смотреть, каким путём идёт ICMP и каким TCP/IP.
Менее вероятная причина - превышение лимита подключений к апачу. Тут NGINX Вам в руки.
Тяжело, когда бросают прямо так сразу в пекло ) Тут ситуация сложная. Может быть всё что угодно. Нет, буквально, ВСЁ, что угодно. Надо делать traceroute с двух сторон (клиента и сервера), пробовать WGET, смотреть логи, придумывать на ходу другие варианты диагностики. Самое страшное, что в этих логах и выводах нужно будет разобраться самому. Это самое сложное, но и ключевое умение IT спеца - уметь разобраться в ситуации, доэтого неизвестной.
Я надеюсь, Вы справитесь, и мир пополнится ещё одним специалистом. Удачи!
Конфиги уж очень generic/default.
апачу - увеличить значение MaxRequestsPerChild раз в 10, а вот MaxClients наоборот, в 5-10 раз сократить.
nginx-у добавить воркеров для начала
Ну и опять недостаточно информации, по большому счету.
Попробуй еще поставить sourceforge.net/projects/pimpapachestat
вместе c munin/monitorix и посмотреть там.
профилировать максимально - хранилище, память, процессор, движок, код сайта, с максимальным логированием всего и вся, смотреть время выполнения, тогда будет уже понятно, где затык
Здравствуйте. Профилировать каждый сайт по отдельности несколько проблемно, сейчас их 17 на сервере, несколько из них довольно крупных. Завтра попробую поставить munin, который здесь рекомендовали, может что-то и выяснится. Если предложите какие нибудь альтернативы, или дополнительные способы, буду благодарен.