Cara mengoptimumkan nginx untuk mengendalikan permintaan 100+k setiap minit

Cara mengoptimumkan nginx untuk mengendalikan permintaan 100+k setiap minit

Beberapa hari lagi saya mendapat tugasan untuk mengkonfigurasi pelayan web ngnix yang boleh mengendalikan permintaan 100k seminit. Untuk menyelesaikan tugas ini, saya mengambil sistem Ubuntu dengan 4 cpu dan 8 GB memori dan mula konfigurasi seperti di bawah.

1. Pasang pelayan web nginx

Ini adalah langkah pilihan jika anda tidak memasang nginx pada sistem anda.

Pasang di Ubuntu/ Debian/ Linuxmint

$ sudo apt-get pemasangan nginx 

Pasang di CentOS / RHEL / FEDORA

# yum pasang nginx 

2. Fail konfigurasi nginx nginx

Sekarang edit konfigurasi nginx /etc/nginx/nginx.Conf dan membuat perubahan dalam nilai berikut. Di bawah konfigurasi hanya berubah parameter yang ditunjukkan.

worker_processes 8; # NO OF CPU * 2 WORKER_RLIMIT_NOFILE 50000; Acara 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; akses_log off; types_hash_max_size 2048;  

3. Mulakan semula nginx dan beban ujian

Setelah membuat semua perubahan di atas hanya mulakan semula perkhidmatan nginx menggunakan arahan berikut.

# perkhidmatan nginx mulakan semula 

Sekarang gunakan alat penanda aras Apache untuk menguji beban. Saya telah memuat naik fail pada pelayan 50kb dan memukulnya dengan 100k kali.

# ab -n 100000 -c 500 http: // 11.22.33.44/mypage.html 
 Ini adalah apacheBench, versi 2.3 Hak Cipta 1996 Adam Twiss, Zeus Technology Ltd, http: // www.Zeustech.Bersih/Berlesen ke Yayasan Perisian Apache, http: // www.Apache.org/ penanda aras 11.22.33.44 (bersabar) siap 10000 permintaan yang disiapkan 20000 permintaan siap 30000 permintaan siap 40000 permintaan siap 50000 Permintaan selesai 60000 permintaan siap 70000 permintaan siap 80000 permintaan siap 90000 permintaan siap 100000 permintaan selesai 100000 permintaan pelayan Server: nginx/.4.6 nama hos pelayan: 11.22.33.44 Pelabuhan Pelayan: 80 Laluan Dokumen: /MyPage.Panjang Dokumen HTML: 53339 Bytes Concurrency Tahap: 500 Masa yang Diambil untuk Ujian: 43.570 saat Permintaan lengkap: 100000 Permintaan Gagal: 0 Jumlah Dipindahkan: 5358300000 Bytes HTML Dipindahkan: 5333900000 Permintaan bytes sesaat: 2295.18 [#/sec] (min) Masa setiap permintaan: 217.848 [MS] (min) Masa setiap permintaan: 0.436 [MS] (Mean, merentas semua permintaan serentak) Kadar pemindahan: 120100.12 [kbytes/sec] masa sambungan yang diterima (ms) min min [+/- sd] median max Connect: 4 84 275.9 18 7027 Pemprosesan: 39 132 124.1 90 3738 Menunggu: 7 21 22.5 18 1598 Jumlah: 50 216 308.0 109 7208 Peratusan permintaan yang disampaikan dalam masa tertentu (ms) 50% 109 66% 127 75% 158 80% 180 90% 373 95% 1088 98% 1140 99% 1333 100% 7208 (permintaan terpanjang) 

Mengikut output di atas, anda dapat melihat bahawa permintaan 100k disampaikan pada 43.570 saat dengan nginx.