Задать вопрос

Помогите найти причину проблем с apache

Приветствую. Есть у меня проект, доставшийся мне в «наследство» — точнее я сам вызвался и полез в кузов)
У проекта довольно мощный выделенный сервер: 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 фактически не было до начала работы с этим проектом.

Спасибо.
  • Вопрос задан
  • 13346 просмотров
Подписаться 5 Оценить Комментировать
Решение пользователя merlin-vrn К ответам на вопрос (3)
merlin-vrn
@merlin-vrn
Это не может быть ротация логов в этот момент? Видно, что апач перезапускался.

Вообще, я бы ещё посмотрел dmesg (на предмет segfaultов и тому подобного) и общесистемные логи, там, messages, лог cron и так далее. Что вообще в системе происходило.
Ответ написан