Da Nginx schneller als Apache ist, warum hat Nginx Apache nicht ersetzt?

WBOY
Freigeben: 2016-08-27 09:06:49
Original
1301 Leute haben es durchsucht

Viele Cloud-Host-integrierte Umgebungen oder verschiedene öffentliche Clouds stellen mittlerweile standardmäßig Lighttpd- oder Nginx-Server bereit. Warum haben diese leistungsstärkeren Serversoftware Apache nicht ersetzt?

Antwortinhalt:

Viele Cloud-Host-integrierte Umgebungen oder verschiedene öffentliche Clouds stellen mittlerweile standardmäßig Lighttpd- oder Nginx-Server bereit. Warum haben diese leistungsstärkeren Serversoftware Apache nicht ersetzt?

Nginx ist definitiv leichter und effizienter als Apache, und beide sind sehr stabil.

Netcraft-Statistiken: Im Februar 2016 entfielen auf Apache etwa 46 %, auf Nginx 25 % und auf IIS weniger als 12 % Unter ihnen beträgt der Anteil von Nginx etwa 25 % und weist einen wachsenden Trend auf, während sowohl Apache als auch IIS einen Abwärtstrend aufweisen. Mit anderen Worten, es gibt einen Trend, bei dem Websites mit hoher Parallelität auf Nginx zurückgreifen von inländischem Alibaba ist ein Zweig, der auf der sekundären Entwicklung von Nginx basiert.

Für die meisten virtuellen Hostbenutzer kommt eine hohe Parallelität nicht in Frage, da die Bandbreite der Engpass ist und es keinen Grund gibt, über Parallelität mit 2M Bandbreite zu sprechen, richtig. Und Apache unterstützt die .htaccess-Konfiguration, ohne die Konfiguration zu überlasten Einfach Die Konfiguration der Benutzerfreundlichkeit ist besser als die von Nginx. Das heißt, die Apache-PHP-Architektur ist einfacher als Nginx. Wenn Sie keine Parallelitätsszenarien verfolgen, warum sollten Sie die Architektur ändern, solange sie ausreichend und einfach ist? zu verwenden

Nginx gibt den Fehler 502 Bad Gateway zurück, nicht aufgrund von Nginx-Problemen, sondern aufgrund von Backend-Problemen.

Wenn beispielsweise der Backend-PHP-FPM-Prozess bei der Verarbeitung einer Anfrage abstürzt, gibt Nginx den Fehler 502 zurück.
Von Natürlich können Sie die fastcgi_next_upstream-Konfiguration verwenden, um Nginx die Anforderung zur Verarbeitung an einen anderen Upstream übertragen zu lassen.

fastcgi_next_upstream error timeout invalid_header http_500 http_502 http_504;Nginx PHP-FPM implementiert dynamische und statische Trennung, Lastausgleich und Failover und ist in der Tat besser als Apache Parallelitätsszenarien Es gibt Vorteile.
Der Apache-Prozess mit integriertem PHP-Modul kann bei der Verarbeitung von PHP keine statischen Ressourcen verarbeiten, aber Nginx muss sich nicht um dieses Problem kümmern, da die Verarbeitung von PHP eine Frage von PHP-FPM ist Die Trennung von dynamisch und statisch. Und Nginx unterstützt die Upstream-Konfiguration eines PHP-FPM-Clusters, um einen Lastausgleich zu erreichen.

PHP-FPM in Kombination mit Nginx kann auch E/A-intensive Vorgänge trennen und die Auswirkungen von Blockierungen auf die gesamte PHP-Anwendung reduzieren.

Benutzer-Downloads und Curl-Anfragen sind typische E/A-intensive Vorgänge, weil sie es sind Tritt hauptsächlich bei Netzwerk-E/A und Festplatten-E/A auf.
Download-Vorgänge, die eine PHP-Authentifizierung erfordern, können an den AIO-Thread-Pool von Nginx delegiert werden:

header("X-Accel-Redirect: $filepath");Was den Curl-Vorgang betrifft, z Sie können beispielsweise einen Überwachungsport 9001 einrichten. Der PHP-FPM-Prozesspool (Pool) mit dem Namen io ist speziell für die Verarbeitung von Curl-Vorgängen (verteilt über Nginx) verantwortlich, um zu verhindern, dass Curl-Vorgänge durch den WWW-Prozesspool blockiert werden, der Port 9000 überwacht.
Derzeit gibt es viele io-Prozesspools. Es spielt keine Rolle, ob Sie einige Prozesse öffnen:

Der I/O-intensive Prozesspool [io] verwendet dynamische Prefork-Prozesse, zum Beispiel 8, wenn er beschäftigt ist, und 4, wenn er inaktiv ist.
<code>nginx.conf: 访问io.php的请求都交给监听9001的PHP-FPM进程池处理
location = /io.php {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9001;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
php-fpm: 正常脚本由静态www池处理,阻塞脚本由动态io池处理
[www]
;名为www的进程池监听9000端口,常驻进程数量为固定4个
listen = 127.0.0.1:9000
pm = static
pm.max_children = 4
[io]
;名为io的进程池监听9001端口,进程数常驻4个,最大8个
listen = 127.0.0.1:9001
pm = dynamic
pm.max_children = 8
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 4</code>
Nach dem Login kopieren
Verwenden Sie die von PHP-FPM bereitgestellte Isolierung des Pools, um die intensiven Berechnungen und I zu trennen /O intensive Vorgänge, die die Auswirkungen der Blockierung auf die gesamte PHP-Anwendung reduzieren können.


Das Gegenstück zum Fasten ist Stabilität.

Für einige Websites, die keine sehr hohen Leistungsanforderungen wie Parallelität haben, ist Apache eine gute Wahl.


Da die beiden Dinge unterschiedliche Schwerpunkte haben, verfügt Apache selbst über viele integrierte Dinge und kann fast alle Webanwendungen ohne die Hilfe anderer Dinge unterstützen. Nginx ist anders. Es bietet Vorteile bei der statischen Dateiverarbeitung und der hohen Parallelität.

Apache konzentriert sich auf Vollständigkeit und Stabilität, während Nginx auf Leichtigkeit und hohe Effizienz setzt. In vielen Fällen werden Apache und Nginx zusammen vor Apache konfiguriert und zum Blockieren von Anforderungen für statische Dateien (die Ressource der Website) verwendet Da die meisten Anfragen heute ausmachen, wird der Inhalt, den Nginx nicht verarbeiten kann, zur Verarbeitung an Apache weitergeleitet.


Nginx ist in der Tat besser, aber nicht alle Websites müssen etwas verwenden, das das Ultimative anstrebt, und sich einfach nur durchwursteln. Letztendlich liegt es daran, dass die Menschen faul und unwillig sind, Neues anzunehmen, und Angst vor Risiken und Verantwortung haben.

Der Topf von LAMP kann verwendet werden, sobald er installiert ist und der Schulungslehrer ihn gelehrt hat. Wenn viele Menschen auf Probleme stoßen, verbringen sie lieber zehnmal mehr Arbeitszeit damit, sich an etwas zu gewöhnen, das sie beherrschen . Ich möchte keinen Tag damit verbringen, etwas Neues zu lernen, wenn ich 100 Mal mehr Zeit damit verbringe, diese große Lücke zu füllen.

Alles hat Vor- und Nachteile, daher wird es schwierig sein, es in Kombination zu verwenden. Viele Menschen waren in der Vergangenheit zu faul, um neue Dinge zu schaffen sind am Anfang resistent gegen Neues, als ob man es nicht hätte. Als ich in die Kaiserhauptstadt kam, fiel mir ein, dass die U-Bahn extrem voll und schnell war. Wenn man tatsächlich kommt, wird man feststellen, dass es so ist nicht so gruselig

Hauptsächlich, weil Nginx nach der Änderung der Konfigurationsdatei neu gestartet werden muss, damit sie wirksam wird. Im Gegensatz zu Apache, das die .htaccess-Datei direkt analysieren kann, kann der Host Nginx nicht neu starten, nur weil der Benutzer seine eigene Konfigurationsdatei geändert hat andere Benutzer.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage