У меня есть сервер Apache, на котором запущен сайт WordPress.
По какой-то причине кажется, что некоторые потоки apache используют большую часть ЦП (10% +), а остальные немного (0,1 ~).
Коробка двухпроцессорная, Intel (R) Xeon (R) CPU E5620 @ 2,40 ГГц (каждый процессор имеет 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>
По какой-то причине кажется, что некоторые потоки apache используют большую часть ЦП (10% +), а остальные немного (0,1 ~).
Здесь вам нужно уделять больше внимания вашей реальной деятельности. В предоставленном вами снимке запущенных задач 7 при нагрузке 4.
Итак, на тот момент количество людей, нуждающихся в обслуживании, составляло 7 (вероятно, но я вижу только 6, отнесенных к httpd). Остальные - это спящие процессы, которые не проснутся, если не произойдет какое-либо событие.
Причина, по которой у вас высокий процент использования ЦП в некоторых процессах, ниже в других, заключается в том, что только очень многим из них есть чем заняться в течение данного второго периода, измеренного в top
.
Есть ли какой-нибудь набор оптимизаций apache для снижения нагрузки?
Что ж, ваша нагрузка, вероятно, колеблется от 3 до 4, потому что половина запущенных процессов, которые вы, вероятно, не завершили в течение 5 секунд (нагрузка измеряется внутри каждые пять секунд).
Там слишком много активных процессов apache. Какие у вас настройки prefork? Попробуйте установить что-нибудь посильнее. Максимум 72 может быть разумным началом и настройкой оттуда. Даже если бы вы могли обслуживать всех с таким количеством процессов, вы заставите все процессы замедляться в равной пропорции, а нагрузка увеличиваться в соответствии с количеством обслуживаемых людей. Лучше подавать то, что вы можете быстро, и отвергать то, чему не можете служить, чем обслуживать всех очень медленно.
У меня такое ощущение, что некоторые части вашей страницы wordpress требуют больших вычислительных ресурсов. Попробуйте кэшировать этот более дорогой контент.