Apakah yang perlu saya lakukan jika pelayan Nginx mempunyai beban CPU yang tinggi dan penggunaan memori proses?

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

Apakah yang perlu saya lakukan jika pelayan Nginx mempunyai beban CPU yang tinggi dan penggunaan memori proses?

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 4 Atau tetapkan terus ke auto.

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

  1. Buka fail konfigurasi Nginx: Biasanya, fail konfigurasi utama Nginx terletak di /etc/nginx/nginx.conf.

  2. Sediakan worker_processes: Ditemui dalam fail konfigurasi events blok, tetapan worker_processes nilai. jika tidak events blok, 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.

使用 tophtop 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_processesworker_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!

发表 评论

Alamat e-mel anda tidak akan diterbitkan. 必填 项 已 用 * 标注

Tatal ke