Почему сервер проявляет аномальную активность каждые 7 утра?
Добрый день, уважаемые участники этого прекрасного ресурса.
Возникла тут странная ситуация с одним нашим сервером. Работали с ним уже многие люди, не только я, крутится на нём пара сайтов, возможно еще что-то небольшое. И вот проблема: каждые 7 утра на нём ведётся какая-то непонятная активность, php5-fpm и mysql сервисы начинают отъедать всю доступную ОЗУ, и после этого очень часто MySQL просто падает от недостатка оперативной памяти.
Естественно, первое, что посмотрел - это crontab'ы всех пользователей системы и root'а. Но там на 7 утра ничего не назначено, даже близко нет ничего в расписаниях к этому времени. Что еще может быть? Где посмотреть? Очевидно, нагрузка связана с нашими сайтами, но я не могу понять, чем конкретно она вызывается, и где её смотреть. Никаких задач по расписанию наши сайты самостоятельно не выполняют, всё только через крон.
Всё, большое спасибо, это и было проблемой. Я сам дурачина, у нас же реально у сервера другая временная зона, и скрипты крона надо было изучать в соответствии с нею.
Теперь источник проблемы виден - это скрипт очисти папки кэша на одном из сайтов, в котором выполняется такая команда:
0 4 * * * find /var/sites/site/public_html/application/cache -ctime +1 -delete
То есть, находит и удаляет файлы кеша возрастом больше суток. Там этих файлов реально огромное количество набирается из-за плохо продуманной системы кэширования, не разбивающей файлы по директориям. Походу, именно эта команда отъедает оперативную память и не даёт достаточного количества её другим приложениям, что становится причиной нестабильной работы сервера.
Сергей Сергеев: да обычный какой-то кеш всяких результатов вычислений на сайте :) Не я его писал, точно сказать не могу, что там такое кешируется. Но кешируется много, много мелкой информации, которая распихивается по отдельным файлам.
В общем, я это дело просто решил: изменил драйвер кеширования с файлового на APC, чтобы хранить всё это в оперативной памяти сервера, вместе файлов. Теперь этой проблемы больше нет)
Newrelic уже подключен) Триальный период использовали, сейчас работает бесплатная версия. Да, действительно, у нас же там логгирование php еще не подключено, надо будет подключить и посмотреть, что он покажет. Спасибо за совет.
Честно, именно в агрегации информации из логов у меня нет опыта. Понятное дело, что можно открыть лог запросов к серверу, и там их уже целая куча, тысячи строк. Но вот что с этими данными делать, я не знаю) Запросы на сервер идут постоянно, сайты довольно популярные, а как проанализировать эту информацию и вынести на её основе какие-то полезные выводы - я не знаю.
Всегда в одно и тоже время?
Операционная система какая?
Как crontab смотрели?
В /etc/cron.d (в Centos сюда можно закиндывать отдельные задания) или crontab -l
Почему не посмотрели какой процесс грузит php? ps aux | grep php
OS: Debian 7.0
Кронтаб смотрел следующим образом: crontab -u [username] -l
Я смотрел на загрузку в это время по графикам, которые строит Newrelic, но там информация обобщается и сглаживается таким образом, чтобы показывать средние значения, и трудно становится определить точно, какое из приложений начинает перетягивать все ресурсы системы под себя. Надо будет как-нибудь посмотреть прямо в это время как работает сервер, наверное.