In den letzten zwei Tagen habe ich eine Reihe von Apache-Servern erstellt. Jeder Server verfügt über 4G-Speicher und verwendet den Prefork-Modus. Die Anzahl der zu Beginn festgelegten Verbindungen war zu gering und es dauerte lange, bis auf Benutzeranfragen reagiert wurde . Später habe ich die Apache 2.0.59-Konfigurationsdatei httpd.conf geändert:
# 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 # MaxClients: maximum number of server processes allowed to start # MaxRequestsPerChild: maximum number of requests a server process serves StartServers 10 MinSpareServers 10 MaxSpareServers 15 ServerLimit 2000 MaxClients 2000 MaxRequestsPerChild 10000
Zeigen Sie die Anzahl der httpd-Prozesse an (dh die Anzahl der gleichzeitigen Anforderungen, die Apache im Prefork-Modus verarbeiten kann):
Linux-Befehl:
ps -ef | grep httpd | wc -l
Beispiel für das Rückgabeergebnis:
1388
bedeutet, dass Apache 1388 gleichzeitige Anforderungen verarbeiten kann. Der Spitzenwert von Jeder Server in meiner Gruppe hat 2002 erreicht.
Zeigen Sie die Anzahl der gleichzeitigen Anfragen von Apache und seinen TCP-Verbindungsstatus an:
Linux-Befehl:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
Beispiel für das Rückgabeergebnis:
LAST_ACK 5
SYN_RECV 30
ESTABLISHED 1597
FIN_WAIT1 51
FIN_WAIT2 504
TIME_WAIT 1057
Der SYN_RECV gibt die Anzahl der Anfragen an, die auf die Verarbeitung warten; ESTABLISHED gibt den normalen Datenübertragungsstatus an; TIME_WAIT gibt die Anzahl der Anfragen an, die verarbeitet wurden wurden verarbeitet und warten auf das Ende des Timeouts.
Status: Beschreibung
GESCHLOSSEN: Keine Verbindung aktiv oder in Bearbeitung
LISTEN: Der Server wartet auf einen eingehenden Anruf
SYN_RECV: Eine Verbindungsanfrage ist eingetroffen und wartet auf Bestätigung
SYN_SENT: Die Anwendung wurde gestartet und öffnet eine Verbindung
ESTABLISHED: Normaler Datenübertragungsstatus
FIN_WAIT1: Die Anwendung sagt, dass sie abgeschlossen ist
FIN_WAIT2: Die andere Seite hat der Freigabe zugestimmt
ITMED_WAIT: Warten auf alle Pakete sterben
CLOSING: Beide Seiten versuchen gleichzeitig zu schließen
TIME_WAIT: Die andere Seite hat eine Freigabe initialisiert
LAST_ACK: Warten, bis alle Pakete sterben