Direktori Artikel
Adakah anda tiba-tiba mendapati di tempat kerja bahawa penggunaan CPU Nginx telah meroket? Lebih memburukkan lagi keadaan, pelbagai proses pekerja Nginx memakan sumber seperti orang gila setiap kali saya melihat proses tersebut.
Melihat adegan ini, kepala anda menjadi panas dan anda tidak dapat menahan diri untuk menjerit: "Ya Tuhan, adakah pelayan itu akan meletup, jangan risau, ini tidak bermakna pelayan anda akan "selesai", tetapi Nginx Kami memerlukan anda untuk melakukan pengoptimuman yang menyeluruh!
Analisis punca beban Nginx yang berlebihan

Pertama, kita perlu memikirkan,Mengapa Nginx tiba-tiba menjadi "keletihan"?Terdapat banyak sebab untuk masalah itu, jangan takut, mari kita ketahui bersama di bawah.
1. Konfigurasi yang tidak munasabah
Dalam fail konfigurasi Nginx, perkara yang paling penting ialah worker_processes. Parameter ini menentukan bilangan proses yang dimulakan oleh Nginx.
- Jika anda mengkonfigurasi terlalu sedikit proses pekerja, beban CPU akan melonjak jika anda mengkonfigurasi terlalu banyak, memori tidak mencukupi;
- Anda perlu mencari titik keseimbangan, contohnya,Tetapkan worker_processes kepada 1 hingga 2 kali ganda bilangan teras CPU.
- Jika anda mempunyai 4 teras kemudian cuba
worker_processes 4Atau tetapkan terus keauto.
2. Lawatan melonjak
Kadangkala, beban Nginx tiba-tiba meningkat bukan kerana anda membuat kesilapan, tetapi kerana bilangan lawatan terlalu tinggi.Permintaan akses serentak yang tinggi akan menyebabkan proses pekerja Nginx menjadi terharu., setiap proses terlebih beban, dan CPU dan memori juga penuh. Pada masa ini, anda mungkin perlu menambah baik sumber pelayan, seperti menambah bilangan teras CPU atau meningkatkan memori. Sudah tentu, ini juga peringatan: jangan lupa pertimbangkan pemunggahan CDN atau pengimbangan beban.
3. Menghadapi serangan berniat jahat
Menjadi "sangat popular" di Internet bukanlah perkara yang baik Serangan hasad boleh menyasarkan anda pada bila-bila masa. Jika anda mendapati bahawa penggunaan CPU adalah tinggi secara luar biasa dan sumber IP permintaan mencurigakan, besar kemungkinan tapak web anda mengalami serangan DDoS. Pada masa ini,Anda perlu menggunakan tembok api atau mengehadkan kekerapan akses dengan segera, seperti menggunakan modul pengehad semasa yang disertakan dengan Nginx, atau menyediakan senarai hitam IP.
Bagaimana untuk menyelesaikan masalah penggunaan memori tinggi proses Nginx?
Jadi persoalannya, mengapa proses pekerja Nginx mengambil begitu banyak sumber? Kita perlu bermula dengan konfigurasi dan mengoptimumkannya langkah demi langkah.
Kaedah konfigurasi
Buka fail konfigurasi Nginx: Biasanya, fail konfigurasi utama Nginx terletak di
/etc/nginx/nginx.conf.Sediakan
worker_processes: Ditemui dalam fail konfigurasieventsblok, tetapanworker_processesnilai. jika tidakeventsblok, anda perlu mencipta satu.nginx events { worker_connections 1024; use epoll; # 或者适用于操作系统的其他事件模型 }
1. Tetapkan worker_connections dengan betul
nginx worker_connections Parameter menentukan bilangan maksimum sambungan yang boleh dikendalikan oleh setiap proses pekerja. Jika terlalu kecil, ia akan menjejaskan prestasi konkurensi jika terlalu besar, ia mungkin menggunakan terlalu banyak sumber.
Bagaimana untuk mengira nilai yang sesuai?
Dengan mengandaikan anda mempunyai CPU 4-teras dan 16GB RAM, titik permulaan yang selamat ialah worker_connections 4096.
Tetapi jika tapak web anda mempunyai banyak trafik, pertimbangkan untuk meningkatkan nilai ini kepada 8192 untuk memastikan setiap proses boleh mengendalikan permintaan yang mencukupi.
events {
worker_connections 8192;
}
Dengan cara ini, kuasa pemprosesan Nginx akan bertambah baik.
2. Laraskan keepalive_timeout
Satu lagi parameter utama untuk Nginx untuk mengendalikan permintaan ialah keepalive_timeout.
Tetapan ini menentukan berapa lama sambungan klien ke pelayan boleh dikekalkan.
Jika ditetapkan terlalu lama, ia akan menduduki terlalu banyak sumber sambungan..
Anda boleh cuba keepalive_timeout Tetapkan kepada 15 saat untuk mengekalkan sambungan dan melepaskan sumber.
keepalive_timeout 15;
3. Optimumkan had deskriptor fail
Secara lalai,Linux Sistem ini mempunyai had pada bilangan deskriptor fail yang boleh dibuka oleh setiap proses.
Jika Nginx perlu memproses sejumlah besar fail (seperti sumber statik), anda mungkin melihat ralat daripada Nginx, menggesa "too many open files".
anda boleh lulus worker_rlimit_nofile Tingkatkan had deskriptor fail, contohnya ditetapkan kepada 65535.
worker_rlimit_nofile 65535;
4. Dayakan caching dan gzip
Caching dan pemampatan adalah dua kunci kepada pengoptimuman prestasi tapak web.
Dengan mendayakan fungsi caching Nginx, sumber statik (seperti imej dan fail JS) boleh dicache dalam ingatan, sekali gus mengurangkan beban pada pelayan.
Selain itu, menghidupkan fungsi pemampatan gzip boleh mengurangkan jumlah data yang dihantar dan meningkatkan kelajuan tapak web.
gzip on;
gzip_types text/plain application/javascript;
5. Menganalisis penggunaan sumber Nginx
Akhir sekali, jika anda telah menyelesaikan semua pengoptimuman di atas tetapi Nginx masih menggunakan banyak CPU, anda mungkin perlu menggunakan beberapa alat untuk analisis mendalam.
使用 top 或 htop Lihat penggunaan sumber masa nyata sesuatu proses,melalui strace Jejaki panggilan sistem, atau gunakan nmon Hasilkan laporan prestasi. Hanya dengan menganalisis secara menyeluruh operasi sebenar Nginx kita boleh melakukan penalaan yang lebih tepat.
总结
Jangan panik apabila penggunaan CPU Nginx meningkat. Ia mungkin hanya disebabkan oleh konfigurasi yang tidak betul atau trafik yang berlebihan.
melalui pelarasan yang munasabah worker_processes 和 worker_connectionsDengan mendayakan caching, mengoptimumkan tamat masa dan deskriptor fail, anda boleh mengurangkan tekanan beban pada Nginx dengan ketara.
Nginx ialah pelayan web berkuasa yang, apabila dioptimumkan dengan betul, boleh memberikan prestasi cemerlang untuk tapak web anda.
Ingat, sebarang soalan boleh dijawab olehSainskaedah untuk menyelesaikannya, mengoptimumkan prestasi pelayan tidak terkecuali.
Pantau dan laraskan tepat pada masanya, adalah kunci untuk memastikan Nginx berjalan dengan cekap. Jika anda boleh menguasai teknik ini, tapak web anda akan selamat walaupun berdepan trafik tinggi atau serangan berniat jahat.
Saya harap artikel ini telah memberi inspirasi kepada anda, cepat dan optimumkan Nginx anda!
Blog Harapan Chen Weiliang ( https://www.chenweiliang.com/ ) berkongsi "Apakah yang perlu saya lakukan jika beban CPU pelayan Nginx dan penggunaan memori proses adalah tinggi?" 》, membantu anda.
Selamat datang untuk berkongsi pautan artikel ini:https://www.chenweiliang.com/cwl-32093.html
Untuk membuka lebih banyak helah tersembunyi🔑, dialu-alukan untuk menyertai saluran Telegram kami!
Share dan like jika anda suka! Perkongsian dan suka anda adalah motivasi berterusan kami!