Сервер медленный, но много процессора и оперативной памяти

Мой сайт вырос с 20 000 посещений в день до 182 000 вчера, благодаря тому, что он размещался на ряде популярных сайтов.

Сайт стал несколько не отвечает. Многие запросы приведут к тайм-ауту. Тем не менее, есть много процессора и оперативной памяти. ЦП и ОЗУ на самом деле не достигли пика выше 20% и составляют в среднем около 12%.

При попытке загрузить домашнюю страницу с помощью WGET, она остановится здесь:

Разрешение domain.io (domain.io)... 91.121.220.92 Соединение с domain.io (domain.io)|91.121.220.92|:80... не удалось: соединение истекло. Повторная.

Но если он действительно подключится, он быстро загрузит страницу. Кроме того, я могу подключиться к phpMyAdmin через браузер по IP, и он работает как обычно.

Это приводит меня к мысли, что есть проблема в Apache

Мои настройки:

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

<IfModule mpm_prefork_module>
StartServers          5
MinSpareServers       5
MaxSpareServers      10
MaxClients          150
MaxRequestsPerChild   0

<IfModule mpm_worker_module>
StartServers          2
MinSpareThreads      25
MaxSpareThreads      75
ThreadLimit          64
ThreadsPerChild      25
MaxClients          150
MaxRequestsPerChild   0

<IfModule mpm_event_module>
StartServers          2
MinSpareThreads      25
MaxSpareThreads      75
ThreadLimit          64
ThreadsPerChild      25
MaxClients          150
MaxRequestsPerChild   0

Не уверен, какой из них я использую, проверим сейчас.

У кого-нибудь есть предложения по поводу того, с чем здесь повозиться? В Apache или иначе.

Когда я вхожу через SSH, он говорит:

System load:    2.92
Processes:           289
Users logged in:     0
Memory usage:   9%
Swap usage:     0%

Сервер представляет собой 4-ядерный процессор 3,2 ГГц с 32 ГБ ОЗУ и 2x2 ТБ, из которых мало что используется.

2 ответа

Некоторые другие вещи, которые нужно проверить, в журнале ошибок apache, проверьте наличие таких записей:

apache server reached MaxClients setting, consider raising the MaxClients setting

Это означает, что вы достигли настроенного максимального количества процессов / потоков

Еще одним хорошим признаком того, что apache не справляется с нагрузкой, возможно, из-за максимальной конфигурации потока / процесса, является переполнение очереди прослушивания, вы можете проверить это следующим образом:

netstat -s | grep -i listen

Обычно вы не получите вывод от этого, но в случае проблем вы получите:

# netstat -s | grep -i listen 
    26760 times the listen queue of a socket overflowed
    26760 SYNs to LISTEN sockets ignored
#

Надеюсь это поможет

Вы должны включить mod_status и посмотрите, не достигаете ли вы Apache пределов одновременных соединений. Возможно, вы установили эти пределы слишком низкими и должны увеличить значения MaxClients, ThreadLimit а также ThreadPerChild зависит от того, какой модуль mpm вы используете.

Другие вопросы по тегам