Test de débit Ab, pourquoi nginx n'est pas aussi bon qu'Apache
怪我咯
怪我咯 2017-05-16 17:01:44
0
5
834

Environnement

系统 win7 x64 8G内存 ADM7750双核
对比 
1) Apache 2.4.9 + php5.5.12 ts vc11 
2) NGINX 1.6.2 + PHP-FPM

Code

<?php 
# http://localhost/hello.php
echo  "hello";
<!-- http://localhost/js.html -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
</body></html>

Test

./ab -c10 -n1000 http://localhost/hello.php
./ab -c10 -n1000 http://localhost/js.html

Résultats

            js.html                         hello.php
nginx      0.907sec 1102/sec                timeout error 
apache     0.695sec 1439/sec                0.198s 1089/sec

Questions

Maintenant, tout le monde recommande nginx, mais pourquoi le débit de nginx, qu'il s'agisse de HTML pur ou de PHP seul, est-il inférieur à celui d'Apache
La plate-forme UGC est plus adaptée à Apache ou à nginx ?

怪我咯
怪我咯

走同样的路,发现不同的人生

répondre à tous(5)
漂亮男人

Test de comparaison des performances IIS et Apache sur Windows 7
IIS + php-cgi.exe(NTS) vs Apache + php5apache2_4.dll(TS)
Environnement (Win7 64 bits) : IIS7+PHP5.4 (NTS non-thread- version sécurisée) vs Apache2.4 (32 bits)+PHP5.4
Performances des fichiers statiques :

ab -k -c100 -n10000 http://127.0.0.1/info.htm      # IIS RPS 1709
ab -k -c100 -n10000 http://127.0.0.1:8080/info.htm # Apache RPS 1847

Conclusion : Apache basé sur le runtime APR et le multithreading WinNT n'est pas pire qu'IIS dans le traitement des ressources statiques.

Performances PHP :

ab -k -c100 -n10000 http://127.0.0.1/bs.php      # IIS RPS 1180
ab -k -c100 -n10000 http://127.0.0.1:8080/bs.php # Apache RPS 1071

Conclusion : Apache utilise MPM threadé, il doit donc utiliser une version thread-safe de PHP. La vérification de la sécurité des threads a une certaine surcharge, les performances sont donc inférieures à celles de IIS+PHP-CGI.

Nginx n'est pas basé sur le multithreading pour atteindre une concurrence élevée, mais est basé sur le mécanisme d'E/S réseau asynchrone piloté par les événements epoll (Linux), kqueue (FreeBSD), Nginx utilise la sélection la plus originale sous Windows, et non sous Windows IOCP, donc Windows. Cette version de Nginx est uniquement destinée aux tests et au développement. Pour libérer les véritables performances de Nginx, elle doit être sous Linux ou FreeBSD.

Bien qu'Apache utilise également certains appels système sous Windows, le WINNT MPM d'Apache est un MPM multithread, il présente donc même des avantages par rapport à IIS dans le traitement des ressources statiques sous une concurrence non élevée (telle que la concurrence 100). MPM qui utilise epoll sous Linux. Par exemple, le MPM d'événement par défaut de la série 2.4 est une architecture basée sur les événements epoll. Le processus principal gère plusieurs processus de travail, et chaque processus de travail a plusieurs threads. L'exécution d'E/S réseau asynchrones est celle d'Apache. réponse puissante au défi de Nginx.

滿天的星座

Windows n'explique rien. Il n'est utilisé que pour tester sous Windows et rien de plus.
La version de nginx pour Windows utilise l'API Win32 native (et non la couche d'émulation Cygwin). Seule la méthode de traitement de connexion select() est actuellement utilisée, il ne faut donc pas s'attendre à des performances et une évolutivité élevées. de nginx pour Windows est considéré comme une version bêta
Windows n'a pas epoll et kqueue, donc nginx fonctionne naturellement mal lors de l'utilisation de select sous Windows.

仅有的幸福

C'est une bonne habitude pour l'affiche de tester et de vérifier personnellement, mais Linux est généralement utilisé comme serveur nginx. Si vous utilisez Windows, les performances de nginx peuvent ne pas être aussi bonnes que celles d'Apache. Il devrait être que nginx et Apache utilisent le même mécanisme d'exploitation de sélection sur Windows, ce qui est similaire au traitement des boucles de file d'attente.
La lenteur des performances de nginx sous Windows peut être due à : nginx doit également appeler php-cgi, et Apache a une intégration intégrée du sapi de php.

Sous Linux, Apache est toujours le choix, et nginx peut utiliser epoll, puis :
Apache fait toujours la queue pour le traitement
Le mécanisme epoll de nginx, reçoit une requête, la renvoie à php-cgi, puis passe à la requête suivante. Lorsque le traitement de php-cgi est terminé, renvoyez-le simplement au client. Cela se passe en parallèle.

L'affiche peut jeter un œil à la différence entre epoll et apache :
Supposons que vous étudiez à l'université et que le dortoir dans lequel vous vivez comporte de nombreuses chambres et que vos amis veulent venir chez vous.

L'hôtesse de la version sélectionnée emmènera vos amis vous chercher de pièce en pièce jusqu'à ce qu'ils vous trouvent.

La version epoll de la tante du dortoir notera d'abord le numéro de chambre de chaque étudiant. Lorsque vos amis viennent, il vous suffit de dire à vos amis dans quelle chambre vous vivez. Vous n'êtes pas obligé d'emmener vos amis dans le bâtiment. trouver quelqu'un.

Si 10 000 personnes viennent et veulent retrouver leurs camarades de classe qui vivent dans ce bâtiment, il va de soi qui est le plus efficace dans la version select ou dans la version epoll.

De même, sur les serveurs à haute concurrence, l'interrogation des E/S est l'une des opérations les plus chronophages. Il est également très clair quelles performances sont les plus élevées entre select et epoll.

仅有的幸福

Gagner NG? 哎

给我你的怀抱

Je ne publierai pas la configuration. Nginx a-t-il activé epool ?

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!