1

У меня есть небольшой Debian VPS, размещенный в Rackspace, с моим личным веб-сервером. За последние несколько недель было несколько раз, когда Apache (я использую 2.2.16), кажется, просто зависал бесконечно. Перезапуск Apache с помощью /etc/init.d/apache2 restart решает проблему до тех пор, пока она не произойдет снова. Из-за этого я почти уверен, что это не проблема с настройками DNS или виртуальных каталогов (ни одна из которых не изменилась с тех пор, как это началось).

Иногда затрагиваются только динамические страницы с участием PHP и MySQL, а статические HTML-страницы загружаются медленно; В других случаях все страницы зависают до тех пор, пока я не перезапущу Apache. Если у меня открыта вкладка в Chrome, через некоторое время зависание может привести к ошибке с ERR_CONNECTION_ABORTED; если я перезапущу Apache, он перестанет загружаться с ERR_CONNECTION_RESET.

В /var/log/apache2/error.log нет ничего, кроме сканеров, ищущих несуществующие файлы. Сначала я думал, что это проблема с оперативной памятью (256 МБ, я дешевый, но трафик порядка нескольких сотен обращений в день, в основном веб-сканеры), но подкачка далеко не полная, процессы Apache бездействуют, и хотя свободной памяти очень мало, она примерно такая же после загрузки нескольких страниц после перезапуска Apache. Производительность приемлема, когда она работает, мне просто нужно выяснить, что вызывает ее зависание после нескольких дней безотказной работы.

Я попытался уменьшить MaxClients и увеличить MaxRequestsPerChild, но это не помогло:

 <IfModule mpm_prefork_module>
     StartServers          2
-    MinSpareServers       2
-    MaxSpareServers       4
-    MaxClients           10
-    MaxRequestsPerChild 200
+    MinSpareServers       1
+    MaxSpareServers       2
+    MaxClients            4
+    MaxRequestsPerChild 2000
 </IfModule>

(Эти настройки, как старые, так и новые, и основаны на поиске в Google - существует масса противоречивой информации о том, что делает для разумной конфигурации.)

Любая идея, как я могу выяснить, что происходит? Где найти хорошие места для поиска потенциального тупика?

Дополнительный вопрос: так как сам VPS в порядке, есть ли какой-нибудь cronjob, который я могу запустить локально, который предупредит меня, когда Apache начнет плохо себя вести? (Мне не нужна мощная служба удаленного мониторинга, такая как Pingdom.)

0