Attention, cet article a plus d'une année d'ancienneté. Il est possible que les informations présentées ne soient plus à jour, spécialement dans le cadre d'un article technique.
Bonjour à tous,
Aujourd’hui, j’ai ré-installé le serveur de The Abyss Project car vu que c’était mon serveur de test, j’avais pas mal de bordel et de configurations obsolètes dessus.
Mais après mon article d’hier sur un benchmark Apache Vs Nginx, je me suis dit : « Pourquoi est-ce que je ne ferais pas ces tests sur The Abyss Project au passage ? »
Et c’est exactement ce que j’ai fait, et voici mes résultats.
Versions utilisées :
Les versions utilisées sont les dernières versions stables disponibles dans les dépôts officiels de Debian 7.5.
- Apache2 : 2.2.22-13+deb7u1
- Apache2-mpm-worker : 2.2.22-13+deb7u1
- Nginx : 1.6.0-1~wheezy
- Php5-fpm : 5.4.4-14+deb7u9
- WordPress : 3.9.1
Matériel utilisé :
cat /proc/cpuinfo (3 cœurs)
cat /proc/cpuinfo processor : 0 vendor_id : AuthenticAMD cpu family : 16 model : 2 model name : AMD Opteron(tm) Processor 6128 stepping : 3 cpu MHz : 2000.068 cache size : 512 KB physical id : 0 siblings : 4 core id : 0 cpu cores : 4 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 5 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good tsc_reliable nonstop_tsc unfair_spinlock pni cx16 x2apic popcnt hypervisor lahf_lm cmp_legacy extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw bogomips : 4000.13 TLB size : 1024 4K pages clflush size : 64 cache_alignment : 64 address sizes : 40 bits physical, 48 bits virtual power management:
cat /proc/meminfo (4Gb)
cat /proc/meminfo MemTotal: 4194304 kB MemFree: 3368284 kB Cached: 11808 kB Buffers: 0 kB Active: 351352 kB Inactive: 435664 kB Active(anon): 345708 kB Inactive(anon): 429500 kB Active(file): 5644 kB Inactive(file): 6164 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 131072 kB SwapFree: 131072 kB Dirty: 20 kB Writeback: 0 kB AnonPages: 775208 kB Shmem: 470224 kB Slab: 38976 kB SReclaimable: 10492 kB SUnreclaim: 28484 kB
cat /etc/debian_version && uname -r ( Debian 7.5 AMD64 )
root@debian:~# cat /etc/debian_version && uname -r 7.5 2.x
Analyse de la page de benchmark :
Voici une analyse avec pingdom tools (cliquez pour voir l’analyse)
Un screenshot de la page :
Configuration de Nginx, Apache2 et php5-fpm :
Les configurations sont de « base ». Elles n’ont pas étés modifiées après l’installation.
Toutefois, le worker process correspond bien à 3 dans le Reverse Proxy Nginx.
Serveur de benchmark :
Le serveur de benchmark est un vps lp2 de firstheberg
2 Coeurs, 2Gb de ram
Connexion 100 Mbps vers le serveur de The Abyss Project
Le test :
Voici la commande utilisée :
siege -d5 -c300 -t3M
Elle permet de simuler 300 utilisateurs qui effectueront des requêtes entre toutes les 0 et 5 secondes pendant 3 minutes.
Les résultats Apache Vs Nginx :
Apache 2 MPM WORKER :
siege -d5 -c300 -t3M http://www.abyssproject.net/ ** SIEGE 2.70 ** Preparing 300 concurrent users for battle. The server is now under siege... Lifting the server siege... done. Transactions: 15850 hits Availability: 100.00 % Elapsed time: 179.76 secs Data transferred: 127.21 MB Response time: 0.89 secs Transaction rate: 88.17 trans/sec Throughput: 0.71 MB/sec Concurrency: 78.47 Successful transactions: 15850 Failed transactions: 0 Longest transaction: 12.76 Shortest transaction: 0.03

Reverse Proxy Nginx 1.6 + Apache 2 MPM WORKER :
siege -d5 -c300 -t3M http://www.abyssproject.net/ ** SIEGE 2.70 ** Preparing 300 concurrent users for battle. The server is now under siege... Lifting the server siege... done. Transactions: 16258 hits Availability: 100.00 % Elapsed time: 179.75 secs Data transferred: 130.49 MB Response time: 0.82 secs Transaction rate: 90.45 trans/sec Throughput: 0.73 MB/sec Concurrency: 74.55 Successful transactions: 16258 Failed transactions: 0 Longest transaction: 6.74 Shortest transaction: 0.04

Conclusion :
On gagne légèrement en performances avec un Reverse Proxy Nginx sur un wordpress lourd, mais ce qui est intéressant, c’est la plus longue requête.
12,76 secondes sur Apache 2 contre 6,74 secondes avec un reverse proxy nginx par dessus !
Bon je croit que j’ai fini avec mon duel Apache Vs Nginx.
Pour savoir si Nginx va vraiment vous faire gagner en performance, la seule solution c’est de faire des tests avec votre application sur le serveur qui va l’héberger.