Heim >Betrieb und Instandhaltung >Nginx >Welche Engine ist besser, Apache HTTP oder Nginx?

Welche Engine ist besser, Apache HTTP oder Nginx?

王林
王林nach vorne
2023-05-11 15:49:06950Durchsuche

HTTP-Middleware

Wenn wir einen Weblink in den Browser eingeben, sendet der Browser eine Anfrage an den entsprechenden Server basierend auf dem HTTP(s)-Transportprotokoll Der Server empfängt die entsprechende Anfrage, verarbeitet sie und gibt die entsprechenden Informationen an den Browser zurück. Der Browser analysiert dann den Inhalt in http und zeigt ihn in Form einer Webseite an. HTTP(s)传输协议向相应的服务器发送一个请求,服务器收到相应的请求后经过处理,返回相应的信息给浏览器,然后由浏览器解析http中的内容,以网页的形式表现出来。

服务器负责接收请求,并在处理之后返回相应的数据,而其中又可以细分为处理http连接的服务部分和执行服务内容的应用部分(WordPress使用PHP生成需要的页面,就属于应用部分)

而不论应用部分执行的是何种应用,处理http连接的部分几乎是相同的,所以出现了专门处理http连接的中间件,目前最常见的是ApacheNginx

Apache

正式名称是“Apache HTTP Server”,是一款开源的HTTP服务器中间件,诞生于1995年,曾经是HTTP服务领域的龙头老大,拥有大量的用户和丰富的社区资源。Apache的一大优点就是方便与Wordpress等CMS软件进行集成,只需要简单的设定就能搭建一个基于CMS的网站。

Apache的内部处理模型

内部构造方面,Apache采用多进程的方式,每有一个连接就会为这个连接开辟一个进程,专门用于处理这个连接上的请求,直到连接结束。这样做的好处是:

  • 来自不同客户端的连接会立刻得到相应且互不干扰,而且不会因为某一个服务占用了较长的时间而使其它的连接得不到响应。

但是缺点也是显而易见的:

  • 当同时访问数比较多的时候,Apache会建立大量的进程,占用过多的内存资源。

  • 大量线程间的调度也会造成CPU处理能力的大量浪费。

由此产生了被称为C10K的难题,C即客户端(Client),10K是指1万,即不论服务器的性能和网络带宽有多高,Apache都难以同时处理1万个以上的连接。

Nginx

读作Engine-X,和Apache一样也是用于HTTP服务的开源中间件,诞生于2004年。NginxApache的历史要短,但是正因为是后来者,Nginx吸取了Apache的教训,在设计初期就考虑到了处理大量连接时的效率问题,解决了诸如C10K等随着互联网规模壮大而产生的难题。

Nginx的内部处理模型

Nginx采用了非阻塞IO和异步消息驱动的方式,即在称作worker的线程中使用循环来处理队列中的连接请求。而根据硬件的情况,可以设定多个worker线程,充分利用CPU的核心资源。

  • 解决了处理大量连接时消耗内存过多,调度效率低下的问题,同时还能充分的利用所有的CPU核心。在相同硬件下处理并发连接的能力是Apache的10到100倍。

但是Nginx这种方式也不是没有缺点。

  • 当服务器单核性能较差时,基于CMS的动态网站可能需要较长的时间来执行一个请求,此时来自其他客户端的请求将无法立即被执行。当CPU核心数较少,worker线程不足时会更加明显。

好在现在服务器的性能越来越强,在AMD的带领下CPU核心数也越来越多,Nginx的缺点足以被弥补,而高效的优势也愈发显现出来。

综合对比

Apache Nginx处理能力有限10-100倍是否会被复杂任务阻塞否有可能会设定难度比较简单相对复杂社区资源丰富相对较少

近年来,Nginx的市场占有率不断提高,2019年已经达到了和Apache持平的水平。而对于有极大访问量的大型网站,可以看到访问量越大,Nginx的占比也就越高。这也从侧面印证了Nginx在处理大量访问时的优越性能。

负载均衡

Nginx除了可以作为HTTP服务器使用,其强大的反向代理功能还被广泛地用作负载均衡前端服务器,逐渐取代了基于硬件的负载均衡器。

Nginx中可以配置若干个后端服务器,Nginx在收到HTTP

Der Server ist für den Empfang von Anfragen und die Rückgabe entsprechender Daten nach der Verarbeitung verantwortlich, die in den Serviceteil, der http-Verbindungen verarbeitet, und den Anwendungsteil, der Serviceinhalte ausführt, unterteilt werden können ( WordPress verwendet PHP, um die erforderlichen Seiten zu generieren, die zum Anwendungsteil gehören) #🎜🎜##🎜🎜# Unabhängig davon, welche Art von Anwendung der Anwendungsteil ausführt, Verarbeitung Die Teile von http-Verbindungen sind fast gleich, daher gibt es Middlewares, die speziell http-Verbindungen verarbeiten. Derzeit sind Apache und die am häufigsten verwendeten Nginx. #🎜🎜##🎜🎜#Apache#🎜🎜##🎜🎜#Der offizielle Name ist „<code>Apache HTTP Server“, eine Open-Source-HTTP-Server-Middleware. Das 1995 gegründete Unternehmen war einst führend im Bereich HTTP-Dienste mit einer großen Anzahl von Benutzern und umfangreichen Community-Ressourcen. Einer der Vorteile von Apache ist die einfache Integration mit CMS-Software wie Wordpress. Sie können mit nur einfachen Einstellungen eine CMS-basierte Website erstellen. #🎜🎜##🎜🎜#Apaches internes Verarbeitungsmodell#🎜🎜##🎜🎜#In Bezug auf die interne Struktur verfolgt Apache einen Multiprozessansatz. Jedes Mal, wenn eine Verbindung besteht, entsteht ein neuer Für diese Verbindung wird eine Verbindung geöffnet, die der Verarbeitung von Anfragen auf dieser Verbindung gewidmet ist, bis die Verbindung endet. Der Vorteil davon ist: #🎜🎜#
  • #🎜🎜#Verbindungen von verschiedenen Clients werden sofort beantwortet, ohne sich gegenseitig zu stören, und werden nicht durch a beeinträchtigt Bei bestimmten Diensten dauert es lange und andere Verbindungen können nicht reagieren. #🎜🎜#
#🎜🎜#Aber auch die Mängel liegen auf der Hand: #🎜🎜#
  • #🎜🎜#Beim Zahlenvergleich von gleichzeitigen Besuchen Apache erstellt häufig eine große Anzahl von Prozessen, die zu viele Speicherressourcen belegen. #🎜🎜#
  • #🎜🎜#Das Planen zwischen einer großen Anzahl von Threads führt auch zu einer großen Verschwendung von CPU-Rechenleistung. #🎜🎜#
#🎜🎜# Dies führte zu einem Problem namens C10K C ist der Client (Client), und 10K bezieht sich auf 10.000, das heißt, unabhängig davon Unabhängig davon, wie hoch die Serverleistung und die Netzwerkbandbreite sind, ist es für Apache schwierig, mehr als 10.000 Verbindungen gleichzeitig zu verarbeiten. #🎜🎜##🎜🎜#Nginx#🎜🎜##🎜🎜# wird als Engine-X ausgesprochen und wird wie Apache auch für HTTP verwendet Open-Source-Middleware für Dienste, geboren im Jahr 2004. Nginx hat eine kürzere Geschichte als Apache, aber gerade weil es ein Nachzügler ist, hat Nginx die Lektionen von Apachegelernt >. In den frühen Phasen des Entwurfs wurden Effizienzaspekte bei der Handhabung einer großen Anzahl von Verbindungen berücksichtigt und Probleme wie C10K gelöst, die mit der zunehmenden Größe des Internets auftraten. #🎜🎜##🎜🎜#Das interne Verarbeitungsmodell von Nginx#🎜🎜##🎜🎜#Nginx verwendet nicht blockierende E/A und asynchrone nachrichtengesteuerte Methoden, d. h. in Eine Schleife wird in einem Thread namens worker verwendet, um in der Warteschlange befindliche Verbindungsanforderungen zu verarbeiten. Je nach Hardwarebedingungen können mehrere Worker-Threads eingerichtet werden, um die Kernressourcen der CPU voll auszunutzen. #🎜🎜#
  • #🎜🎜# Lösen Sie das Problem des übermäßigen Speicherverbrauchs und der geringen Planungseffizienz bei der Verarbeitung einer großen Anzahl von Verbindungen und nutzen Sie gleichzeitig alle CPU-Kerne vollständig aus. Die Fähigkeit, gleichzeitige Verbindungen auf derselben Hardware zu verarbeiten, ist 10- bis 100-mal höher als die von Apache. #🎜🎜#
#🎜🎜#Aber Nginx ist diese Methode nicht ohne Mängel. #🎜🎜#
  • #🎜🎜#Wenn die Single-Core-Leistung des Servers schlecht ist, kann es lange dauern, bis eine dynamische Website auf CMS-Basis eine Anfrage ausführt Zu diesem Zeitpunkt werden Anfragen von anderen Kunden nicht sofort ausgeführt. Dies wird deutlicher, wenn die Anzahl der CPU-Kerne gering ist und nicht genügend Worker-Threads vorhanden sind. #🎜🎜#
#🎜🎜# Glücklicherweise wird die Leistung von Servern immer stärker. Unter der Führung von AMD steigt die Anzahl der CPUAuch die Zahl der Code-Kerne nimmt immer mehr zu, die Mängel von <code>Nginx reichen aus, um kompensiert zu werden, und die Vorteile einer hohen Effizienz werden immer offensichtlicher. #🎜🎜##🎜🎜#Umfassender Vergleich#🎜🎜##🎜🎜#Apache Nginx hat eine begrenzte Verarbeitungsleistung von 10-100 Mal. Wird es durch komplexe Aufgaben blockiert? der Schwierigkeitsgrad? Es ist relativ einfach. Es gibt relativ wenige komplexe Community-Ressourcen die gleiche Ebene wie Apache . Bei großen Websites mit einer großen Anzahl von Besuchen können Sie sehen, dass der Anteil von Nginx umso höher ist, je höher die Anzahl der Besuche ist. Dies bestätigt auch von außen die überlegene Leistung von Nginx bei der Bewältigung einer großen Anzahl von Zugriffen. #🎜🎜##🎜🎜#Lastausgleich#🎜🎜##🎜🎜#Nginx Neben der Verwendung als HTTP-Server wird seine leistungsstarke Reverse-Proxy-Funktion auch häufig als Lastausgleichsfront verwendet -End-Server, der nach und nach hardwarebasierte Load Balancer ersetzt. #🎜🎜##🎜🎜# In Nginx können mehrere Backend-Server konfiguriert werden, die nach Erhalt der HTTP-Anfrage bestimmte Regeln befolgen. Polling, IP-Hashing, Prioritätsrandomisierung usw. leiten die Anfrage an den Back-End-Server weiter, um eine durchschnittliche oder gewichtete Lastverteilung auf mehrere Server zu erreichen. #🎜🎜#

Gleichzeitig kann es als Lastausgleichs-Frontend auch die vom Back-End zurückgegebenen Daten zwischenspeichern, um den Back-End-Server zu entlasten. Das Front-End verwendet Nginx für den Lastausgleich, um die Anzahl der Verbindungen zu jedem Server zu begrenzen, und es ist nicht ungewöhnlich, dass auf dem Back-End-Server Apache ausgeführt wird. Nginx做负载均衡限制每个服务器的连接数,后端服务器运行Apache的模式也并不少见。

硬件负载均衡器的业界大佬F5 networks在2019年收购了Nginx,推出了包含收费服务的负载均衡解决方案Nginx+

Der Branchenführer für Hardware-Load-Balancer F5-Netzwerke erwarb Nginx im Jahr 2019 und brachte eine Load-Balancing-Lösung Nginx+ auf den Markt, die kostenpflichtige Dienste umfasst >. 🎜

Das obige ist der detaillierte Inhalt vonWelche Engine ist besser, Apache HTTP oder Nginx?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen