jumlah proses pekerja nginx

23

Saya mengatur nginx untuk melayani instalasi Drupal, dan saya sepertinya menemukan informasi yang saling bertentangan pada pengaturan proses pekerja nginx. Satu situs mengatakan Anda perlu dua, satu mengatakan Anda perlu lima, satu mengatakan satu per prosesor ...

Bagaimana saya harus memilih jumlah proses pekerja nginx? Jika ada bedanya, ini adalah VM tamu di kluster VMWare, dan saya telah memberikannya satu prosesor virtual.

ceejayoz
sumber

Jawaban:

16

Nginx tidak seperti Apache dan proses webservers per koneksi lainnya. Ia menggunakan satu proses master untuk memulai dan memantau sejumlah kecil proses pekerja yang benar-benar menangani koneksi. Rekomendasi saya adalah mulai dengan jumlah default pekerja, yaitu 1.

worker_processes  1;

Anda hanya perlu meningkatkan ini jika Anda menemukan bahwa pekerja nginx menghabiskan terlalu banyak waktu diblokir di IO. Ini tidak akan sampai melayani ratusan permintaan per detik.

Anda juga dapat menemukan pengaturan ini berguna.

worker_rlimit_nofile 8192;

events {
    worker_connections  2048;
    use epoll;
}
Dave Cheney
sumber
1
Bisakah Anda jelaskan untuk apa "worker_rlimit_nofile 8192" digunakan?
Pengembang Pixel
wiki.nginx.org/NginxHttpMainModule#worker_rlimit_nofile . Ini menginstruksikan pekerja untuk meningkatkan ulimitnya.
Dave Cheney
15

Pada sistem SMP, setidaknya proses pekerja nCPU harus dimulai: pada quad-core - empat dll. Itu sangat diperlukan untuk proxy.

Jika Anda akan melayani beberapa situs dengan banyak konten statis, akan lebih baik untuk menambahkan lebih banyak pekerja - satu per disk.

Jika subsistem disk Anda buruk atau memuat terlalu tinggi, proses pekerja nginx mungkin terkunci pada operasi I / O dan tidak dapat melayani permintaan lainnya. Dalam hal ini Anda harus meningkatkan jumlah proses pekerja ke beberapa nilai yang sesuai (mungkin puluhan), atau menambahkan beberapa memori untuk cache disk.

Lihat ke dalam cetakan "ps ax": pekerja yang dalam kondisi "D" terkunci. Tingkatkan hingga setidaknya proses pekerja nCPU tidak diblokir.

Vadim
sumber