Сервер медленный, но много ЦП и ОЗУ

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

Сайт стал несколько не отвечать. Многие запросы приводят к таймауту. Тем не менее, есть много доступного процессора и оперативной памяти. ЦП и ОЗУ на самом деле не превысили 20%, а в среднем составляют около 12%. Подключение к 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 ТБ, из которых мало что используется.

0
задан 3 November 2015 в 14:13
2 ответа

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

1
ответ дан 4 December 2019 в 13:45

Еще кое-что, что нужно проверить в журнале ошибок 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
#

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

1
ответ дан 4 December 2019 в 13:45

Теги

Похожие вопросы