Optimieren Sie die Apache-Leistung

Optimieren Sie die Apache-Leistung

Ich suche nach Möglichkeiten, unseren aktuellen, intern gehosteten Webserver zu optimieren. Ich versuche, so viel wie möglich zu liefernrelevantInformationen unten. Bitte lassen Sie mich wissen, wenn Sie zusätzliche Informationen benötigen, um helfen zu können.

Auf dem Server läuft eine einzige Website, eine Online-Plattform zur Pizzabestellung, die auf dem Zend Framework (ver1) basiert. Die Verkehrsstatistiken des letzten Monats zeigen etwa 6.000 Seitenaufrufe pro Tag, hauptsächlich um die Essenszeit herum. In diesem Zeitraum wurden Spitzenwerte von etwa 1500 Aufrufen/Stunde erreicht.

Wir haben vor Kurzem von einer 2/2 Mbit-ADSL-Leitung auf 100/100 Mbit-Glasfaser aufgerüstet und haben beim Abendessen immer noch Leistungsprobleme. Wir gingen davon aus, dass die 2 Mbit das Problem waren. Die Website ist in Zeiten geringer Auslastung ziemlich flott.

Hardware

CPU: Intel(R) Xeon(R) CPU            5160  @ 3.00GHz (3000.13-MHz K8-class CPU)

Mem: 328M Active, 4427M Inact, 891M Wired, 244M Cache, 623M Buf, 33M Free
Swap: 16G Total, 468K Used, 16G Free
(6GB physical, 16GB swap)

Filesystem   Type     Size    Used   Avail Capacity  Mounted on
/dev/ad7s1a  ufs      4.8G    768M    3.7G    17%    /
devfs        devfs    1.0K    1.0K      0B   100%    /dev
/dev/ad7s1g  ufs      176G    5.2G    157G     3%    /home
/dev/ad7s1e  ufs      4.8G    2.8M    4.5G     0%    /tmp
/dev/ad7s1f  ufs       19G    3.5G     14G    19%    /usr
/dev/ad7s1d  ufs      4.8G    550M    3.9G    12%    /var

Server-Betriebssystem

FreeBSD 8.2-RELEASE

Software

apache-2.2.17
php5-5.3.8
mysql-server-5.5

Apache-Fußabdruck(Beispiel, entnommen aus # oben)

31140 www              1  45    0   377M 41588K lockf   2   0:00  0.00% httpd
31122 www              1  44    0   375M 35416K lockf   2   0:00  0.00% httpd
31109 www              1  44    0   375M 38188K lockf   2   0:00  0.00% httpd
31113 www              1  44    0   375M 35188K lockf   2   0:00  0.00% httpd

Apache verwendet das Prefork-MPM, APC (Alternative PHP Cache). Das SSL-Modul ist geladen, wird aber nicht verwendet (d. h. es funktioniert nicht wirklich und wird daher nicht verwendet). Es gibt eine Datei mit Einstellungen für MPM-Module, aber wie ich sehe, ist sie nicht in der Datei httpd.conf enthalten, die Include-Zeile ist auskommentiert. Daher würde ich vermuten, dass das Prefork-MPM auch mit Standardwerten funktioniert.

Hier sind einige andere Apache-Conf-Werte, die ich gefunden habe - die in https.conf enthalten sind

Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

UseCanonicalName Off
HostnameLookups Off

Laden bei Leistungsproblemen

Bildbeschreibung hier eingeben

Hinweis: API-Anfragen an das Backend

Unsere Online-Plattform kommuniziert mit unserem Backend-System über eine API (GET/POST). Für Preisangaben zu Warenkörben (zwischengespeichert, bis ein neuer Artikel hinzugefügt wird), Produkte (zwischengespeichert), Produktpreise (zwischengespeichert). Und der Backend-Server zeigt tatsächlich eine echte Auslastung, wenn Leistungsprobleme im Web auftreten. Ich gehe also eher davon aus, dass es die API-Anfragen sind, deren Ausführung ewig dauert und die Clients auf dem Webserver aufhalten. Meine Frage ist also, ob die oben angegebenen Statistiken (Verkehr/Last) und die aktuelle Konfiguration der Software im Vergleich zu den Spezifikationen der Internetverbindung und der Hardware Anzeichen für einen überlasteten Server sind. Und könnte ich die maximale Anzahl von Clients auf dem Webserver basierend auf den verfügbaren Ressourcen und dem tatsächlichen Platzbedarf von Apache erhöhen?

Antwort1

Die Leistung von Websites ist ein großes Thema. So wie ich das sehe, liegt das Problem höchstwahrscheinlich nicht bei Apache.

Es gibt jedoch einige Dinge, die Ihnen helfen können, Ihre Leistung zu verbessern.

  • Caching! Ich weiß nicht, wie viel Sie in Ihrem PHP-Code zwischenspeichern. Aber da Sie kein SSL verwenden und vermutlich viele schreibgeschützte Daten haben, versuchen SieLack

  • Aktivierenmod_expires

  • Profilieren Sie Ihre Website/Backend-API mitJMeter

Antwort2

Nein, die oben genannten Punkte sind keine Anzeichen für einen überlasteten Server.

Obwohl es möglicherweise zu einer Netzwerk-E/A-Sättigung kommt (da Sie keine tatsächlichen Daten dazu bereitstellen), ist dies äußerst unwahrscheinlich, da während Spitzenzeiten so wenige tatsächliche Anfragen erfolgen.

Sie müssen einige Tests am HTTP-Backend ausführen, um zu sehen, ob es mit maximaler Kapazität läuft. Wenn ja, müssen Sie DAS beheben.

Für die Zukunft sollten Sie dieServer StatusHandler zur Überwachung von Apache, wie hier dokumentiert:http://httpd.apache.org/docs/2.2/mod/mod_status.html

Antwort3

Die Leistung von Apache kann mit Worker MPM und Prefork-Einstellungen optimiert werden. Das Ändern der Keepalive- und Max-Spare-Threads kann zu einer Leistungssteigerung und einem geringeren Speicherbedarf beitragen. Die optimale Einstellung für Prefork und Worker finden Sie unterHier

Antwort4

Möglicherweise gehen Ihnen die Prozesse aus (definiert durch MaxSpareServersund StartServers). Der Standardwert ist nur 10. Wenn Ihre Antwortzeiten also hoch sind, reicht das möglicherweise nicht für eine Anfrage alle 2 Sekunden (1500 / Stunde).

Schalten Sie das server-statusModul ein, um die verwendeten Prozesse zu überwachen.Stellen Sie sicher, dass Sie Zugriffsregeln festlegen, sodass nur intern darauf zugegriffen werden kann.

verwandte Informationen