Назад | Перейти на главную страницу

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

Мой сайт стал получать с 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 ТБ, из которых мало что используется.

Некоторые другие вещи, которые нужно проверить, в журнале ошибок 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 вы используете.