Comment optimiser Nginx pour gérer 100 + k demandes par minute

Comment optimiser Nginx pour gérer 100 + k demandes par minute

Il y a quelques jours, j'ai obtenu une affectation pour configurer le serveur Web NGIX qui peut gérer 100k demandes par minute. Pour terminer cette tâche, je prends un système Ubuntu avec 4 CPU et 8 Go de mémoire et démarrer la configuration comme ci-dessous.

1. Installez le serveur Web Nginx

Ce sont des étapes facultatives si vous n'avez pas installé Nginx sur votre système.

Installez sur Ubuntu / Debian / Linuxmint

$ sudo apt-get install nginx 

Installer sur Centos / Rhel / Fedora

# yum install nginx 

2. Régler le fichier de configuration nginx

MAINTENANT CONFIGURATION NGINX / etc / nginx / nginx.confli et faire un changement dans les valeurs suivantes. Dans la configuration ci-dessous, seuls les paramètres modifiés affichent.

Worker_Processes 8; # n ° de CPU * 2 Worker_Rlimit_nofile 50000; Événements Worker_Connections 20000;  http sendFile on; TCP_NOPUSH ON; TCP_NODELAY ON; keepalive_requests 100; #keepalive_timeout 65; open_file_cache max = 100; gzip off; Access_log off; Types_hash_max_size 2048;  

3. Redémarrer nginx et charge

Après avoir effectué toutes les modifications ci-dessus, redémarrez simplement le service Nginx en utilisant la commande suivante.

# Service Nginx Redémarrer 

Utilisez maintenant l'outil de référence Apache pour tester la charge. J'ai téléchargé un fichier sur un serveur de 50 kb et je l'ai frappé par 100k fois.

# AB -N 100000 -C 500 http: // 11.22.33.44 / mypage.html 
 C'est apachebench, version 2.3 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http: // www.zeustech.net / licencié à l'Apache Software Foundation, http: // www.apache.org / analyse comparative 11.22.33.44 (Soyez patient) Complété 10000 demandes remplies 20000 demandes remplies 30000 demandes remplies 40000 demandes remplies 50000 demandes remplies 60000 demandes remplies 70000 demandes terminées 80000 demandes Terminées 90000 demandes remplies 100000 demandes terminées 100000 demandes Logiciel de serveur: NGINX / 1 Terminé.4.6 Nom d'hôte du serveur: 11.22.33.44 Port serveur: 80 Chemin de document: / MyPage.Document HTML Longueur: 53339 Onttes Concurrence Niveau: 500 Temps passé pour les tests: 43.570 secondes Demandes complètes: 100000 demandes d'échec: 0 Total transféré: 5358300000 octets HTML transférés: 5333900000 Ontes demandes par seconde: 2295.18 [# / sec] (Moyenne) Temps par demande: 217.848 [MS] (Moyenne) Temps par demande: 0.436 [MS] (moyenne, sur toutes les demandes simultanées) Taux de transfert: 120100.12 [kytes / sec] Temps de connexion reçus (ms) min Moyenne [+/- sd] médian max connect: 4 84 275.9 18 7027 Traitement: 39 132 124.1 90 3738 en attente: 7 21 22.5 18 1598 Total: 50 216 308.0 109 7208 Pourcentage des demandes desservies dans un certain temps (MS) 50% 109 66% 127 75% 158 80% 180 90% 373 95% 1088 98% 1140 99% 1333 100% 7208 (demande la plus longue) 

Selon la sortie ci-dessus, vous pouvez voir que pour 100k, les demandes ont été servies dans 43.570 secondes par Nginx.