Heim >Backend-Entwicklung >PHP-Tutorial >Vergleichende Analyse von drei großen WEB-Servern (Apache, Lighttpd, Nginx)
1. lighttpd
Lighttpd ist ein Programm mit sehr geringem Speicheraufwand, geringer CPU-Auslastung, guter Leistung und umfangreichen Modulen. lighttpd ist einer der besseren unter vielen OpenSource-Lightweight-Webservern. Unterstützt FastCGI, CGI, Auth, Ausgabekomprimierung, URL-Umschreiben, Alias und andere wichtige Funktionen.
Lighttpd verwendet fastcgi zum Ausführen von PHP, das nur sehr wenige PHP-Prozesse verwendet, um auf eine große Menge an Parallelität zu reagieren.
Die Vorteile von Fastcgi sind:
· Aus Stabilitätsgründen führt fastcgi CGI in einem unabhängigen Prozesspool aus. Wenn ein einzelner Prozess ausfällt, kann das System ihn problemlos verwerfen und dann neu starten Weisen Sie neue Prozesse zu, um die Logik auszuführen.
· Aus Sicherheitsgründen ist fastcgi völlig unabhängig vom Host-Server, egal wie schnell fastcgi ausfällt >· Aus Sicht der Leistung trennt fastcgi die Verarbeitung der dynamischen Logik vom Server. Die E/A-Verarbeitung mit großer Last bleibt dem Host-Server überlassen, sodass der Host-Server E/A vollständig ausführen kann. Die Logikverarbeitung macht möglicherweise nur einen kleinen Teil aus, z. B. erfordert die Verarbeitung einer großen Anzahl von Bildern überhaupt keine Beteiligung von Logikprogrammen (Hinweis 1).
· In Bezug auf die Skalierbarkeit ist fastcgi neutral technischer Standard und kann in jeder Sprache (PHP, Java, Python...) geschriebene Verarbeitungsprogramme vollständig unterstützen
2.Apache
Apache ist laut Netcraft der weltweit führende Webserver (
www.netsraft.co.uk) Laut einer Umfrage verwenden mehr als 50 % der Webserver weltweit Apache.Im April 1995 wurde der früheste Apache (Version 0.6.2 ) wurde von der Apache-Gruppe veröffentlicht. Eine gemeinnützige Organisation, die über das Internet operiert und festlegt, was in der Standardverteilung des Apache-Webservers enthalten sein soll, sodass jeder Fehler beheben, neue Funktionen bereitstellen und ihn portieren kann an neue Plattformen und andere Arbeiten. Wenn neuer Code an die Apache-Gruppe übermittelt wird, überprüft die Gruppe seinen spezifischen Inhalt, testet ihn und wenn er zufrieden ist, wird der Code in die Haupt-Apache-Distribution integriert.
Apache-Funktionen:
1) Kann auf fast allen Computerplattformen ausgeführt werden
2) Unterstützt das neueste http/1.1-Protokoll
3) Einfache und leistungsstarke dateibasierte Konfiguration (. httpd.conf).
4) Unterstützt Common Gateway Interface (CGI)
5) Unterstützt virtuellen Host.
6) Unterstützt HTTP-Authentifizierung.
7) Integriertes Perl.
8) Integrierter Proxyserver
9) Sie können den Status des Servers über einen Webbrowser überwachen und das Protokoll anpassen.
10 ) Unterstützt serverseitige Einschlussbefehle (SSI).
11) Unterstützt Secure Socket Layer (SSL).
12) Hat die Möglichkeit, Benutzersitzungsprozesse zu verfolgen.
13) Unterstützen Sie fastcgi
14) Unterstützen Sie Java-Servlets
3.nginx
Nginx ist ein sehr leichter HTTP-Server, der von Russen geschrieben wurde. Nginx wird als „Engine“ ausgesprochen leistungsstarker HTTP- und Reverse-Proxy-Server sowie ein IMAP/POP3/SMTP-Proxy-Server. Nginx wurde vom Russen Igor Sysoev für die am zweithäufigsten besuchte Rambler.ru-Site in Russland entwickelt.
Nginx ist ereignisgesteuert geschrieben, weist daher eine sehr gute Leistung auf und ist außerdem ein sehr effizienter Reverse-Proxy , Lastausgleich. Die Leistung entspricht der von Lighttpd, es gibt jedoch nicht das Speicherleckproblem von Lighttpd. Auch der mod_proxy von Lighttpd weist einige Probleme auf und wurde seit langem nicht mehr aktualisiert. Allerdings unterstützt Nginx den CGI-Betrieb nicht, da dadurch einige dadurch verursachte Programmschwachstellen verringert werden können. Daher muss FastCGI zum Ausführen von PHP-Programmen verwendet werden.
Als HTTP-Server verfügt nginx über die folgenden Grundfunktionen:
Verarbeitung statischer Dateien, Indexdateien und automatische Indizierung beim Öffnen von Dateideskriptoren;
Cachelose Reverse-Proxy-Beschleunigung, einfacher Lastausgleich und Fehlertoleranz.
FastCGI, einfacher Lastausgleich und Fehlertoleranz.
Modularer Aufbau. Einschließlich Gzipping, Bytebereiche, Chunked-Antworten sowie SSI-Filter und andere Filter. Wenn mehrere auf einer einzelnen Seite vorhandene SSIs von FastCGI oder einem anderen Proxyserver verarbeitet werden, kann diese Verarbeitung parallel ablaufen, ohne aufeinander zu warten.
Nginx wurde speziell für die Leistungsoptimierung entwickelt. Leistung ist sein wichtigster Gesichtspunkt und bei seiner Implementierung wird großer Wert auf Effizienz gelegt. Es unterstützt das Kernel-Poll-Modell und hält dem Test hoher Last stand. Berichten zufolge kann es bis zu 50.000 gleichzeitige Verbindungen unterstützen.
Nginx hat eine hohe Stabilität. Wenn andere HTTP-Server auf Zugriffsspitzen stoßen oder jemand in böswilliger Absicht eine langsame Verbindung initiiert, kann dies auch dazu führen, dass der physische Speicher des Servers erschöpft ist, häufig ausgetauscht wird und die Antwort verloren geht, und der Server kann nur neu gestartet werden. Wenn Apache beispielsweise derzeit mehr als 200 Prozesse hat, wird die Web-Reaktionsgeschwindigkeit offensichtlich sehr langsam sein. Nginx verwendet eine Technologie zur schrittweisen Ressourcenzuweisung, wodurch die CPU- und Speicherauslastung sehr gering ist. Nginx gibt offiziell an, dass es 10.000 inaktive Verbindungen unterhält und nur 2,5 MB Speicher belegt, sodass Angriffe wie DOS für Nginx grundsätzlich nutzlos sind. In Bezug auf die Stabilität ist Nginx besser als Lighthttpd.
Nginx unterstützt Hot Deployment. Es ist besonders einfach zu starten und kann fast rund um die Uhr ohne Unterbrechung laufen, selbst wenn es mehrere Monate läuft, muss es nicht neu gestartet werden. Sie können die Softwareversion auch ohne Serviceunterbrechung aktualisieren.
|
Apache span> | Nginx | Lighttpd | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Proxy | Sehr gut | Sehr gut Gut | Durchschnittlich | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Rewriter | Gut | Sehr gut | Durchschnittlich | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Fcgi | Nicht gut | GutSehr gut | |||||||||||||||||||||||||||||||||||||||||||||||||||||
Hot-Bereitstellung | Nicht unterstützt | Unterstützt | Nicht unterstützt | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Systemdruckvergleich | sehr groß | sehr klein | Relativ klein | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Stabilität | Gut | Sehr gut | Nicht gut | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Sicherheit | Gut | Allgemein | Allgemein | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Technischer Support | Sehr gut | SeltenDurchschnittlich | |||||||||||||||||||||||||||||||||||||||||||||||||||||
Statische Dateiverarbeitung | Durchschnitt | Ausgezeichnet | Gut | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Vhosts virtueller Host | Unterstützt | Nicht unterstützt | Unterstützung | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Reverse-Proxy | DurchschnittlichAusgezeichnet | Allgemein||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sitzung bleibt hängen | Unterstützung | Nicht unterstützt | Nicht unterstützt |
n/-c (ab-Parameter)
|
cpu% | Mem
|
Für Tests benötigte Zeit |
||||||||||||||||||||||||||||||||||||||||||||||||||
100000/100
|
64 | 60 | 462,75 | 21,6 | |||||||||||||||||||||||||||||||||||||||||||||||||
100000/200 | 67 | 60 | 312,07 | 32,4 | 100000/500 | 83 | 60 | 137,24 | 72,8 | ||||||||||||||||||||||||||||||||||||||||||||
100000/1000Fehler Paketverlust aufgetreten | 94 | 60 | 126,6 | 78,9 |
n/-c (ab-Parameter) | cpu% | Mem | RequestsperSecond | Für Tests benötigte Zeit |
100000/100 | 34,6 | 140 | 943,66 | 10.597 |
100000/200 | 35,6 | 110 | 924,32 | 10,818 |
100000/500 | 34,3 | 110 | 912,68 | 10,956 |
100000/1000 | 37 | 160 | 832,59 | 12.106 |
n/-c (ab-Parameter) | cpu% | Mem | RequestsperSecond | Für Tests benötigte Zeit |
100000/100 | 40,6 | 170 | 690,72 | 14,47 | 100000/200 | 41,1 | 180 | 685,39 | 14,59 |
100000/500 | 42,3 | 190 | 633,64 | 15,78 |
100000/1000 td> | 43,1 | 200 | 547,53 | 18,26 |
l
LIGHTTPD
|
cpu% |
Mem
|
RequestsperSecond | Für Tests benötigte Zeit | ||||||||||||||||||||||||||||||||||||||||||||||||||
|
50 |
33,54 |
29,816 |
|||||||||||||||||||||||||||||||||||||||||||||||||||
1000/200
|
52 | 210 | 30,43 | 32,858 | ||||||||||||||||||||||||||||||||||||||||||||||||||
1000/500 | 54 | 230 | 25,79 | 38,76 | ||||||||||||||||||||||||||||||||||||||||||||||||||
1000/1000 | 62 | 250 | 24,83 | 40,28 |
n/-c(ab参数) | cpu% | Mem | RequestsperSecond | Zeit für Tests genommen |
1000/100 | 53,8 | 250 | 83,12 | 12,305|
1000/200 | 55,8 | 250 | 74,05 | 13,504 |
1000/500 | 56 | 260 | 58,99 | 16,951 td> |
1000/1000 | 58 | 260 | 43,41 | 23.347 |
n/-c(ab参数) | cpu% | Mem | RequestsperSecond | Für Tests benötigte Zeit | |||
100000/100 | 60 | 200 | 27,37 | 36,541 | |||
100000/200 | 61 | 220 | 23,82 | 73 | 150 | 20,59 | 48,562 |
100000/ 1000 | 53 | 200 | 27,18 | 36,796 |
n/-c(ab参数) | CPU% | Speicher | RequestsperSecond | Für Tests benötigte Zeit | ||||||||||||||||||||||||||||||||||||||||||||||||||
100000/100 | 45 | 20 | 168,06 | 59,504 | ||||||||||||||||||||||||||||||||||||||||||||||||||
100000/200 | 47 | 22140,64 | 71,103 | |||||||||||||||||||||||||||||||||||||||||||||||||||
100000/500 | 49 | 24 | 52,80 | 189,386 | ||||||||||||||||||||||||||||||||||||||||||||||||||
100000/1000 | 在请求到4840时测试测试程序死掉 |
|
cpu% |
Mem
|
RequestsperSecond | Zeitaufwand für Tests | ||||||||||||||||||||||||||||||||||||||||||||||||||
100000/100 | 70 | 120 | 143,46 | 69,706 | ||||||||||||||||||||||||||||||||||||||||||||||||||
100000/200 td> |
72 | 130 | 140,57 | 71,140 | ||||||||||||||||||||||||||||||||||||||||||||||||||
100000/500 | 73 | 150 | 135,87 | 73,601 | ||||||||||||||||||||||||||||||||||||||||||||||||||
100000/1000 | 77 | 160 | 132,18 | 75.657 |
APACHE 出现丢包
n/-c(ab参数) | CPU% | Speicher | RequestsperSecond | Für Tests benötigte Zeit |
100000/100 | 70 | 180 | 245,73 | 40,694 |
100000/200 | 72 td> | 190 | 245,79 | 40,684 |
100000/500 | 75 | 200 | 241,29 | 41,443 |
100000/1000 | 77 | 220 | 236,74 | 42,239 |