Как сделать снимок процессов в момент перегрузки по памяти?

gerasim

Новичок
Как сделать снимок процессов в момент перегрузки по памяти?

Есть VDS, памяти 160Мб, сайт малопосещаемый, где-то год работал как есть, я не заморачивался. Месяц назад начали приходить оповещения о приближении к лимиту памяти.
Кое-что сделал, снизил "нормальное" потребление памяти с 120-140 до 90-110Мб . Но тем не менее, "пиковая" ситуация возникла снова. Частота появления "пиков" - раз в несколько дней; посмотрел трафик - на нем никаких всплесков не вижу.
В общем, я хочу понять причины таких всплесков потребления памяти. Есть ли такой инструмент, чтобы мне отследить, когда точно это произошло и какие процессы висят в момент пиковой загрузки памяти?
 

dimagolov

Новичок
пиши в лог по onshutdown memory_get_peak_usage, даст хоть какую-то идею. хотя это и не будет учитывать память, потребляемую внутри расширений.
 

gerasim

Новичок
memory_get_peak_usage ? А имеет ли смысл? Не факт ведь, что перегрузку вызывает PHP.
И насчет onshutdown - можно чуть подробнее? Не представляю как его отлавливать, или просто не понял тебя.

Пока что мыслю так: курю bash и пытаюсь на нем написать скрипт, допустим, раз в минуту дергающий free и проверяющий остаток памяти, ну и если мало осталось, в лог писать top.
Не знаю правда, нормально ли это, дергать free так часто.
 

KR

alive in new life
"Пока что мыслю так: курю bash и пытаюсь на нем написать скрипт, допустим, раз в минуту дергающий free и проверяющий остаток памяти, ну и если мало осталось, в лог писать top."
не знаю как правильно, но по-моему это костыль.
хотя даже в этом случае не вижу смысла использоть free проще уж раз в минуту собирать какой-нибудь `ps ....` в разные файлы для наблюдения за развитием проблемы, а grep-ом выцеплять пики по загрузке.

помимо этого стоит посмотреть в сторону БД. возможно существуют какие-то редкие медленные запросы, которые вызывают очередь и как следствие повышенное потребление памяти.
 

gerasim

Новичок
Автор оригинала: KR
проще уж раз в минуту собирать какой-нибудь `ps ....` в разные файлы для наблюдения за развитием проблемы, а grep-ом выцеплять пики по загрузке.
Учитывая, что проблема возникает раз в несколько дней, сколько ж таких файлов надо будет записать пока "случится"? В любом случае, имхо, начинать писать надо по превышению некой планки.


Автор оригинала: KR
помимо этого стоит посмотреть в сторону БД. возможно существуют какие-то редкие медленные запросы, которые вызывают очередь и как следствие повышенное потребление памяти.
возможно, но чтоб смотреть, надо хотя бы примерно представлять, куда смотреть. Да и в БД ли дело.
 
Сверху