Cara mengoptimalkan nginx untuk menangani permintaan 100+k per menit

Cara mengoptimalkan nginx untuk menangani permintaan 100+k per menit

Beberapa hari yang lalu saya mendapat tugas untuk mengkonfigurasi server web NGNIX yang dapat menangani 100 ribu permintaan per menit. Untuk menyelesaikan tugas ini, saya mengambil sistem ubuntu dengan 4 CPU dan 8 GB memori dan mulai konfigurasi seperti di bawah ini.

1. Instal Nginx Web Server

Ini adalah langkah opsional jika Anda belum menginstal Nginx di sistem Anda.

Instal di ubuntu/ debian/ linuxmint

$ sudo apt-get install nginx 

Pasang di CentOS / RHEL / FEDORA

# yum instal nginx 

2. Tune Nginx Configuration File

Sekarang edit konfigurasi nginx /etc/nginx/nginx.conf dan membuat perubahan dalam nilai berikut. Dalam konfigurasi di bawah ini hanya perubahan parameter yang ditampilkan.

Worker_processes 8; # no 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; Access_log off; type_hash_max_size 2048;  

3. Restart nginx dan uji beban

Setelah membuat semua perubahan di atas cukup restart layanan nginx menggunakan perintah berikut.

# layanan nginx restart 

Sekarang gunakan alat Benchmark Apache untuk memuat pengujian. Saya telah mengunggah file di server 50kb dan memukulnya dengan 100k kali.

# ab -n 100000 -c 500 http: // 11.22.33.44/MyPage.html 
 Ini ApacheBench, versi 2.3 Hak Cipta 1996 Adam Twiss, Zeus Technology Ltd, http: // www.Zeustech.Net/Lisensi ke Apache Software Foundation, http: // www.Apache.org/ benchmarking 11.22.33.44 (BE Pasien) Selesai 10000 Permintaan Selesai Permintaan 20000 Selesai 30000 Permintaan Selesai 40000 Permintaan Selesai 50000 Permintaan Selesai 60000 Permintaan Selesai 70000 Permintaan Selesai 80000 Permintaan Selesai 90000 Permintaan Selesai 100000 Permintaan Selesai Perangkat Lunak Server 100000 Permintaan: Nginx/1.4.6 nama host server: 11.22.33.44 Port Server: 80 Jalur Dokumen: /MyPage.HTML Dokumen Panjang: 53339 Bytes Level Konkurensi: 500 Waktu Diambil untuk Tes: 43.570 detik Permintaan Lengkap: 100000 Gagal Permintaan: 0 Total ditransfer: 5358300000 byte html ditransfer: 53333900000 permintaan per detik: 2295.18 [#/detik] (rata -rata) waktu per permintaan: 217.848 [MS] (rata -rata) Waktu per permintaan: 0.436 [MS] (rata -rata, di semua permintaan bersamaan) Tingkat Transfer: 120100.12 [kbytes/detik] menerima waktu koneksi (ms) min rata-rata [+/- sd] median max connect: 4 84 275.9 18 7027 Pemrosesan: 39 132 124.1 90 3738 Menunggu: 7 21 22.5 18 1598 Total: 50 216 308.0 109 7208 Persentase dari permintaan yang disajikan dalam waktu tertentu (MS) 50% 109 66% 127 75% 158 80% 180 90% 373 95% 1088 98% 1140 99% 1333 100% 7208 (permintaan terlama) 

Sesuai output di atas Anda dapat melihat bahwa untuk permintaan 100 ribu dilayani di 43.570 detik oleh nginx.