Geringe Leistung von Apache httpd

Geringe Leistung von Apache httpd

Ich habe eine Website, die mit httpd auf Centos 7 läuft.

Ich habe 8 CPUs und 32 GB RAM.

Wenn wir mehr als 500-600 Benutzer gleichzeitig auf der Website haben, wird die Serverantwort höher. Trotzdem beträgt die CPU-Auslastung etwa 20-25 % und der RAM wird ebenfalls nicht verwendet.

Was kann man noch einstellen um die Performance zu steigern bzw. was fehlt mir? Unsere Seiten sind zu 100% gecacht und wir führen keine Datenbankabfragen oder ähnliches durch.

httpd.conf

HostnameLookups Off
KeepAlive On
MaxKeepAliveRequests 1500
KeepAliveTimeout 5
<IfModule prefork.c>
   StartServers        30
   MinSpareServers     30
   MaxSpareServers     50
   ServerLimit      512
   MaxClients       512
   MaxRequestsPerChild 10000
</IfModule>

Spitze:

%Cpu(s):  1.9 us,  2.6 sy,  0.0 ni, 95.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 32779548 total,  3268520 free, 12679060 used, 16831968 buff/cache

Antwort1

Apache ist verdammt effizient. Obwohl meine Antwort technisch gesehen eingeschränkt sein sollte, ist es mit ziemlicher Sicherheit etwas anderes, das Sie blockiert, und nicht der Server selbst. Wahrscheinlich das CGI, das Sie ausführen, oder etwas ganz anderes.

Sie möchten wahrscheinlich zunächst topprüfen, welche Programme die Ressourcen tatsächlich verbrauchen, und dann von dort aus weitermachen. Möglicherweise möchten Sie dabei weitere Fragen stellen und posten, was Sie sehen.

Die einzigen einigermaßen wahrscheinlichen Beispiele, bei denen Apache wirklich ins Stocken geraten könnte, sind:

  1. Wenn Sie es irgendwie rekursiv machen – Sie wissen schon – Weiterleitungen von einer URL zur gleichen URL und dann immer wieder …

  2. Wenn Sie in Ihrer Konfiguration Domänennamen verwenden, die nicht aufgelöst werden. Vielleicht sind sie falsch geschrieben oder abgelaufen oder Ihr DNS ist durcheinander. Kleinere Fehler sind in Ordnung, aber einige Konfigurationen könnten bei jedem Treffer viele fehlgeschlagene DNS-Lookups versuchen.

Es sieht so aus, als ob Ihre CPU(s) noch ziemlich im Leerlauf sind, also warten sie wahrscheinlich auf einen DNS oder ein Systemproblem oder was auch immer.

Mit „kdump“ können Sie wirklich ins Detail gehen und sehen, was los ist. Sehen Sie sich aber zunächst den Rest von „top“ (oder ps -axww) an, um herauszufinden, welche Programme tatsächlich Ihre Systemressourcen verbrauchen, und gehen Sie nicht einfach davon aus, dass es an Apache liegt. Denn das Problem kann, muss aber nicht, an Apache selbst liegen.

verwandte Informationen