Приветствую. Есть у меня проект, доставшийся мне в «наследство» — точнее я сам вызвался и полез в кузов)
У проекта довольно мощный выделенный сервер: Xeon E3-1240 3.7GHz / 16Gb RAM / 2x2000Gb SATA / IPMI with IP-KVM
Проект — это php+mysql.
Но постоянно возникают проблемы с apache — он падает или тормозит. На сервере установлен
Monit.
Пользователей не сказать чтобы много — около сотни более-менее активных. Он-лайн на пике около 20 человек (но некоторые возможно в несколько окон сидят) и от каждого пользователя постоянные аякс-запросы (знаю что нужен скорее comet-сервер по-хорошему, но пока руки не дошли).
И периодически падает apache, яндекс метрика сообщает о недоступности сайта. Обычно длится не более нескольких секунд — потом apache восстанавливается и работает нормально, хоть и медленно, а потом может опять прилечь. Хотя сам apache при этом не то чтобы падает — он просто тормозит. Перезапуск apache не помогает — через минуту ситуация начинает повторяться.
Monit присылает 2 типа уведомления в таких случаях:
Connection failed Service apache
Date: Tue, 12 Nov 2013 11:00:52
Action: alert
Host: MYHOST
Description: failed protocol test [HTTP] at INET[MYPROJECT:80] via TCP — HTTP: Error receiving data — Resource temporarily unavailable
Your faithful employee,
Monit
или
Resource limit matched Service apache
Date: Tue, 12 Nov 2013 01:56:42
Action: alert
Host: MYHOST
Description: loadavg(5min) of 44.5 matches resource limit [loadavg(5min)>20.0]
Your faithful employee,
Monit
Второй тип сообщения бывает крайне редко — в пиковые часы присутствия пользователей. Да и более менее понятно что произошло
А первое сообщение — для меня скорее загадка. Особенно учитывая что при этом не было каких-то особых аномальных показателей загрузки CPU и памяти со стороны apache, скорее наоборот потребление ресурсов апачем проседало к нулевым значениям ближе.
Настройки apache:
Timeout 500
KeepAlive On
MaxKeepAliveRequests 500
KeepAliveTimeout 15
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 50
MaxClients 450
MaxRequestsPerChild 100
</IfModule>
<IfModule mpm_worker_module>
StartServers 5
MinSpareThreads 5
MaxSpareThreads 75
ThreadLimit 100
ThreadsPerChild 35
MaxClients 450
MaxRequestsPerChild 100
</IfModule>
<IfModule mpm_event_module>
StartServers 5
MinSpareThreads 5
MaxSpareThreads 75
ThreadLimit 100
ThreadsPerChild 35
MaxClients 450
MaxRequestsPerChild 100
</IfModule>
А error.log ничего в такие промежутки не вижу. В 11.02 примерно были проблемы и вот что в логе по этому поводу:
[Mon Nov 11 10:34:06 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
[Mon Nov 11 10:34:06 2013] [warn] RSA server certificate CommonName (CN) `MYHOST' does NOT match server name!?
[Mon Nov 11 10:34:06 2013] [notice] Apache/2.2.22 (Debian) PHP/5.4.4-14+deb7u5 mod_ssl/2.2.22 OpenSSL/1.0.1e configured — resuming normal operations
[Mon Nov 11 11:25:26 2013] [notice] caught SIGTERM, shutting down
[Mon Nov 11 11:25:26 2013] [warn] RSA server certificate CommonName (CN) `MYHOST' does NOT match server name!?
[Mon Nov 11 11:25:26 2013] [notice] suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
Вот настройки monit по мониторингу аpache:
check process apache with pidfile /var/run/apache2.pid
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if failed host MYPROJECT port 80 protocol http then alert
if cpu > 60% for 2 cycles then alert
if cpu > 85% for 5 cycles then restart
if totalmem > 2048 MB for 5 cycles then alert
if children > 250 then alert
if loadavg(5min) greater than 20 for 10 cycles then alert
if 3 restarts within 5 cycles then timeout
Подскажите что у меня настроено не так? Дайте совет, какие значения конфигурации менять и что анализировать?
Прошу, в случае возможности, писать как для блондинки. У меня навыков администрирования, как и взаимодействия с unix фактически не было до начала работы с этим проектом.
Спасибо.