Maison > Questions et réponses > le corps du texte
系统 win7 x64 8G内存 ADM7750双核
对比
1) Apache 2.4.9 + php5.5.12 ts vc11
2) NGINX 1.6.2 + PHP-FPM
<?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>
./ab -c10 -n1000 http://localhost/hello.php
./ab -c10 -n1000 http://localhost/js.html
js.html hello.php
nginx 0.907sec 1102/sec timeout error
apache 0.695sec 1439/sec 0.198s 1089/sec
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 ?
漂亮男人2017-05-16 17:03:44
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.
滿天的星座2017-05-16 17:03:44
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.
仅有的幸福2017-05-16 17:03:44
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.
给我你的怀抱2017-05-16 17:03:44
Je ne publierai pas la configuration. Nginx a-t-il activé epool ?