Ich habe eine Apache-Box, auf der eine WordPress-Website läuft.
Aus irgendeinem Grund scheinen einige Apache-Threads den größten Teil der CPU zu verwenden (10 %+) und der Rest nur wenig (0,1~).
Die Box ist eine Dual-CPU,Intel(R) Xeon(R) CPU E5620 @ 2,40 GHz (wobei jede CPU 4 Kerne und 8 Threads hat).
Aus welchem Grund werden die Threads auf diese Weise angezeigt? Sollten sie nicht die gleiche CPU-Anzahl pro Benutzer haben?
Gibt es eine Reihe von Apache-Optimierungen zur Reduzierung der Belastung (CentOS, Basisinstallation von Apache2 mit PHP und MySQL)?
Die Prefork- und Worker-MPM-Einstellungen sind die Standardeinstellungen unten
# 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>
Antwort1
Aus irgendeinem Grund scheinen einige Apache-Threads den größten Teil der CPU zu verwenden (10 %+) und der Rest nur wenig (0,1~).
Worauf Sie hier mehr achten müssen, ist Ihre tatsächliche Aktivität. In dem von Ihnen bereitgestellten Snapshot beträgt die Anzahl der laufenden Aufgaben 7, bei einer Last von 4.
Zu diesem Zeitpunkt waren also 7 Personen erforderlich (wahrscheinlich – ich kann allerdings nur 6 sehen, die httpd zugeordnet sind). Der Rest sind schlafende Prozesse, die nicht aktiviert werden, sofern nichts passiert.
Der Grund dafür, dass bei einigen Prozessen ein hoher Prozentsatz der CPU-Auslastung anfällt, bei anderen jedoch ein niedriger, liegt darin, dass nur eine bestimmte Anzahl von ihnen innerhalb des in Sekunden gemessenen Zeitraums etwas zu tun hat top
.
Gibt es Apache-Optimierungen zur Reduzierung der Belastung?
Nun, Ihre Auslastung liegt wahrscheinlich bei 3 bis 4, da die Hälfte Ihrer laufenden Prozesse wahrscheinlich nicht innerhalb von 5 Sekunden abgeschlossen ist (die Auslastung wird intern alle fünf Sekunden gemessen).
Dort sind zu viele aktive Apache-Prozesse. Wie lauten Ihre Prefork-Einstellungen? Versuchen Sie, einen praktikableren Wert einzustellen. Ein Maximum von 72 könnte ein vernünftiger Anfang sein und Sie können von dort aus optimieren. Selbst wenn Sie alle mit dieser Anzahl von Prozessen bedienen könnten, würden alle Prozesse im gleichen Verhältnis langsamer werden und die Auslastung würde mit der Anzahl der bedienten Personen steigen. Es ist besser, das, was Sie schnell bereitstellen können, bereitzustellen und das, was Sie nicht bereitstellen können, abzulehnen, als alle sehr langsam zu bedienen.
Ich habe das Gefühl, dass einige Teile Ihrer WordPress-Seite rechenintensiv sind. Versuchen Sie, einige dieser rechenintensiveren Inhalte zwischenzuspeichern.