Загрузка ЦП в некоторых потоках Apache составляет >10%, в других потоках — 0,2%

Загрузка ЦП в некоторых потоках Apache составляет >10%, в других потоках — 0,2%

У меня есть сервер Apache, на котором запущен сайт WordPress.

По какой-то причине некоторые потоки Apache используют большую часть ресурсов ЦП (более 10%), а остальные — немного (~0,1%).

В коробке установлен двойной процессор,Процессор Intel(R) Xeon(R) E5620 @ 2.40GHz (каждый процессор имеет 4 ядра и 8 потоков).

Почему потоки отображаются именно так? Разве они не должны быть одинаково загружены ЦП на пользователя?

Есть ли какой-либо набор оптимизаций Apache, помогающий снизить нагрузку (CentOS, базовая установка Apache2 с PHP и MySQL)?

Настройки prefork и worker MPM указаны ниже по умолчанию

# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>

# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule worker.c>
StartServers         4
MaxClients         300
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

высокая нагрузка

решение1

По какой-то причине некоторые потоки Apache используют большую часть ресурсов ЦП (более 10%), а остальные — немного (~0,1%).

Здесь вам нужно больше внимания уделять вашей фактической активности. В снимке, который вы предоставили, количество запущенных задач равно 7, с нагрузкой 4.

Итак, на данный момент число людей, которым необходимо обслуживание, составило 7 (вероятно, хотя я вижу только 6, отнесенных к httpd). Остальные — спящие процессы, которые не проснутся, пока не произойдет какое-то событие.

Причина, по которой у вас высокий процент загрузки ЦП для некоторых процессов и низкий для других, заключается в том, что только определенное количество из них может что-то сделать в течение заданного второго периода, измеряемого в top.

Есть ли какой-либо набор оптимизаций Apache, помогающий снизить нагрузку?

Что ж, ваша нагрузка, вероятно, колеблется в районе 3–4, поскольку половина запущенных процессов, вероятно, не завершается в течение 5 секунд (нагрузка измеряется внутри каждые пять секунд).

  1. Слишком много активных процессов Apache. Каковы ваши настройки prefork? Попробуйте установить что-то более осуществимое. Максимальное значение 72 может быть разумным началом и настраиваться оттуда. Даже если вы могли бы обслуживать всех с таким количеством процессов, вы заставите все процессы замедлиться в равной пропорции, а нагрузка увеличится в соответствии с количеством обслуживаемых людей. Лучше обслуживать то, что вы можете быстро, и отклонять то, что вы не можете обслуживать, чем обслуживать всех очень медленно.

  2. У меня такое чувство, что некоторые части вашей страницы WordPress требуют больших вычислительных затрат. Попробуйте кэшировать часть этого более дорогого контента.

Связанный контент