Jak zoptymalizować Nginx do obsługi żądań 100+K na minutę

Jak zoptymalizować Nginx do obsługi żądań 100+K na minutę

Kilka dni temu dostałem przypisanie do skonfigurowania serwera WWW NGNIX, który może obsłużyć 100k żądań na minutę. Aby wykonać to zadanie, biorę system Ubuntu z 4 procesorem i 8 GB pamięci i uruchom konfigurację jak poniżej.

1. Zainstaluj serwer WWW Nginx

To są opcjonalne kroki, jeśli nie zainstalowałeś Nginx w systemie.

Zainstaluj na Ubuntu/ Debian/ LinuxMint

$ sudo apt-get instaluj nginx 

Zainstaluj na Centos / Rhel / Fedora

# mniam instaluj nginx 

2. Tune Nginx Plik konfiguracyjny

Teraz edytuj konfigurację Nginx /etc/nginx/nginx.conf i dokonaj zmian w następujących wartościach. W poniżej konfiguracji pokazują tylko zmienione parametry.

Worker_processes 8; # nie CPU * 2 Worker_rlimit_nofile 50000; zdarzenia robotnik_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; typy_hash_max_size 2048;  

3. Uruchom ponownie nginx i obciążenie testowe

Po wprowadzeniu wszystkich powyższych zmian po prostu uruchom ponownie usługę Nginx za pomocą następującego polecenia.

# Service nginx restart 

Teraz użyj narzędzia Benchmark Apache do testowania ładowania. Wysłałem plik na serwerze 50 kb i uderzyłem go o 100 000 razy.

# ab -n 100000 -C 500 http: // 11.22.33.44/Mypage.html 
 To jest ApacheBench, wersja 2.3 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http: // www.Zeustech.Net/licencjonowane do Apache Software Foundation, http: // www.Apache.Org/ Benchmarking 11.22.33.44 (być cierpliwym) Wypełniono 10000 wniosków wypełnionych 20000 wniosków wypełnionych 30000 wniosków wypełnionych 40000 wniosków wypełnionych 50000 żądań Zakończone 60000 żądań Zakończone 70000 żądań Zakończone 80000 żądań Zakończone 90000 żądań Zakończone 100000 żądań Zakończono 100000 żądań Server Oprogramowanie: NGINX/1.4.6 nazwa hosta serwera: 11.22.33.44 Port serwerowy: 80 Dokument ścieżka: /MyPage.Długość dokumentu HTML: 53339 bajtów Poziom współbieżności: 500 czas na testy: 43.570 sekund Pełne żądania: 100000 nieudanych żądań: 0 Całkowity przeniesienie: 5358300000 bajtów HTML Przeniesione: 5333900000 bajtów na sekundę: 2295.18 [#/s] (średni) Czas na żądanie: 217.848 [MS] (średni) Czas na żądanie: 0.436 [MS] (średnia, we wszystkich współbieżnych żądaniach) Szybkość transferu: 120100.12 [KBYTES/SEC] Otrzymane czasy połączenia (MS) Min Średnia [+/- SD] Mediana Max Connect: 4 84 275.9 18 7027 Przetwarzanie: 39 132 124.1 90 3738 Oczekiwanie: 7 21 22.5 18 1598 Razem: 50 216 308.0 109 7208 Procent wniosków podanych w określonym czasie (MS) 50% 109 66% 127 75% 158 80% 180 90% 373 95% 1088 98% 1140 99% 1333 100% 7208 (najdłuższy żądanie) 

Zgodnie z powyższym wyjściem widać, że dla 100 000 żądań podano w 43.570 sekund według Nginx.