Отслеживание нагрузки PHP-скриптов

V@der
На сайте с 22.11.2007
Offline
96
3501

VPS на Дебиане, используется связка nginx+apache2 (mod_php).

Периодически сервер либо уходит в жуткий la (при этом сайты открываются нормально), либо кончается память. Причём, во втором случае перезагрузка не всегда помогает, RAM всё равно медленно, но верно сжирается.

Поддержка хостера говорит, что это скорее всего какие-то скрипты, которые завершаются некорректно и не освобождают тем самым память и другие ресурсы. К сожалению, у меня почти нулевой опыт администрирования *nix, поэтому вопрос к знатокам — есть ли какой-нибудь софт, с помощью которого можно было бы однозначно определить скрипты-причины тормозов сервера? Пробовал смотреть данные по server-status, однако там ничего дельного я не заметил.

Спасибо.

[umka]
На сайте с 25.05.2008
Offline
456
#1

Во-первых, как уже неоднократно говорилось, нагрузку могут создавать соседи по ноде и она у вас видна в LA (как правило, это жёсткий диск).

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

В-третьих, память медленно сжирается всегда. *nix системы используют память всегда по-максимуму. Паниковать надо, если начинает использоваться своп (хотя, как обстоят с ним дела на VPS не знаю).

Лог в помощь!
TA
На сайте с 12.06.2009
Offline
116
TiA
#2

V@der, а можете выложить вывод top? Скорей-всего всю память сжирает Apache из-за неправильной настройки параметра MaxClients

Профессиональная верстка и разработка сайтов на WordPress (http://www.maultalk.com/topic139110s0.html)
V@der
На сайте с 22.11.2007
Offline
96
#3

Сейчас уже не выложу, в топе было много процессов apache2.

MaxClients стоит в 150, MaxSpareServers 5.

Какие данные лучше ставить для vps с 512 ОЗУ, 1,4GHz проц?

[umka], спасибо. На VPS свопа нет, сегодня top показывал 0 свободной ОЗУ. Интересно, что перезагрузка сервера не спасала, пока не обратился в ТП. Т.е. даже после перезагрузки память в течение двух минут съедалась апачем и nginx начинал отдавать 504 ошибки.

По теме вопроса — а в принципе такой софт для мониторинга php-скриптов есть для подобной конфигурации? Или без бубна не обойтись? Извиняюсь, вопросы наверно ламерские. :)

N
На сайте с 06.05.2007
Offline
419
#4
V@der:
По теме вопроса — а в принципе такой софт для мониторинга php-скриптов есть для подобной конфигурации? Или без бубна не обойтись?

например modlogslow

Кнопка вызова админа ()
TA
На сайте с 12.06.2009
Offline
116
TiA
#5

V@der, понятно. Ситуация у вас предельно проста. Объясню.

Значение MaxClients по сути определяет сколько процессов апача может параллельно работать. Вы выставили 150. Много это или мало?

Давайте посчитаем. У вас 512 Мб ОЗУ. При средней криворукости настройки и скриптов один процесс апача может кушать 32-64 Мб ОЗУ (смотреть нужно по колонке RES вывода top). Это значит, что в вашей ОЗУ может одновременно работать от 8 до 16 таких процессов. Это без учета всяких там MySQL и прочих FTP. Если выставить больше процессов, то рано или позно они забьют всю оперативную память и сервер свалится в своп, что, собственно, и происходит.

У вас скорей-всего апач скомпилирован с модулем prefork. Следовательно, настраивать нужно соответствующий раздел. Вот такие примерно должны быть настройки:

<IfModule mpm_prefork_module>

StartServers 4

MinSpareServers 4

MaxSpareServers 8

MaxClients 12

MaxRequestsPerChild 128

</IfModule>

Andreyka
На сайте с 19.02.2005
Offline
822
#6

Ну и статику nginx'ом отдавать до кучи

Не стоит плодить сущности без необходимости
V@der
На сайте с 22.11.2007
Offline
96
#7

netwind, спасибо.

Andreyka, статика и так отдаётся nginx'ом.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий