Direktori Artikel
Pernahkah Anda tiba-tiba menemukan di tempat kerja bahwa penggunaan CPU Nginx meroket? Lebih buruk lagi, beberapa proses pekerja Nginx menghabiskan sumber daya secara gila-gilaan setiap kali saya melihat prosesnya.
Melihat pemandangan ini, kepala Anda menjadi panas dan Anda tidak dapat menahan diri untuk tidak berteriak: "Ya Tuhan, apakah servernya akan meledak?" Nginx Kami membutuhkan Anda untuk melakukan optimasi yang komprehensif!
Analisa penyebab load Nginx berlebihan

Pertama, kita harus mencari tahu,Mengapa Nginx tiba-tiba menjadi "kelelahan"?Banyak sekali penyebab permasalahan tersebut, jangan takut mari kita cari tahu bersama dibawah ini.
1. Konfigurasi yang tidak masuk akal
Pada file konfigurasi Nginx, poin terpenting adalah worker_processes. Parameter ini menentukan jumlah proses yang dimulai oleh Nginx.
- Jika Anda mengonfigurasi terlalu sedikit proses pekerja, beban CPU akan melonjak; jika Anda mengonfigurasi terlalu banyak, memori tidak akan mencukupi.
- Anda harus menemukan titik keseimbangan, misalnya,Tetapkan proses_pekerja menjadi 1 hingga 2 kali jumlah inti CPU.
- Jika Anda memiliki 4 core maka cobalah
worker_processes 4Atau atur langsung keauto.
2. Kunjungan melonjak
Terkadang, load Nginx tiba-tiba melonjak bukan karena Anda melakukan kesalahan, melainkan karena jumlah kunjungan yang terlalu tinggi.Permintaan akses yang sangat bersamaan akan menyebabkan proses pekerja Nginx kewalahan., setiap proses kelebihan beban, dan CPU serta memori juga penuh. Saat ini, Anda mungkin perlu meningkatkan sumber daya server, seperti menambah jumlah inti CPU atau menambah memori. Tentu saja, ini juga merupakan pengingat: jangan lupa untuk mempertimbangkan pembongkaran CDN atau penyeimbangan beban.
3. Mengalami serangan berbahaya
Menjadi "sangat populer" di Internet tidak selalu merupakan hal yang baik. Serangan berbahaya dapat menargetkan Anda kapan saja. Jika Anda mendapati penggunaan CPU sangat tinggi dan sumber IP yang diminta mencurigakan, kemungkinan besar situs web Anda terkena serangan DDoS. Pada saat ini,Anda perlu segera menerapkan firewall atau membatasi frekuensi akses, seperti menggunakan modul pembatas saat ini yang disertakan dengan Nginx, atau menyiapkan daftar hitam IP.
Bagaimana mengatasi masalah penggunaan memori yang tinggi pada proses Nginx?
Jadi pertanyaannya adalah mengapa proses pekerja Nginx menghabiskan begitu banyak sumber daya? Kita harus mulai dengan konfigurasi dan mengoptimalkannya langkah demi langkah.
Metode konfigurasi
Buka file konfigurasi Nginx: Biasanya file konfigurasi utama Nginx terletak di
/etc/nginx/nginx.conf.Mendirikan
worker_processes: Ditemukan di file konfigurasieventsblok, pengaturanworker_processesnilai. jika tidakeventsblok, Anda perlu membuatnya.nginx events { worker_connections 1024; use epoll; # 或者适用于操作系统的其他事件模型 }
1. Atur koneksi_pekerja dengan benar
nginx worker_connections Parameter ini menentukan jumlah maksimum koneksi yang dapat ditangani oleh setiap proses pekerja. Jika terlalu kecil, hal ini akan mempengaruhi kinerja konkurensi; jika terlalu besar, hal ini dapat menghabiskan terlalu banyak sumber daya.
Bagaimana cara menghitung nilai yang sesuai?
Dengan asumsi Anda memiliki CPU 4-inti dan RAM 16GB, titik awal yang aman adalah worker_connections 4096.
Namun jika situs web Anda memiliki banyak lalu lintas, pertimbangkan untuk meningkatkan nilai ini menjadi 8192 untuk memastikan bahwa setiap proses dapat menangani permintaan yang cukup.
events {
worker_connections 8192;
}
Dengan cara ini, kekuatan pemrosesan Nginx akan meningkat pesat.
2. Sesuaikan keepalive_timeout
Parameter penting lainnya bagi Nginx untuk menangani permintaan adalah keepalive_timeout.
Pengaturan ini menentukan berapa lama koneksi klien ke server dapat dipertahankan.
Jika disetel terlalu lama, ini akan menghabiskan terlalu banyak sumber daya koneksi..
Anda dapat mencobanya keepalive_timeout Setel ke 15 detik untuk mempertahankan koneksi dan melepaskan sumber daya.
keepalive_timeout 15;
3. Optimalkan batas deskriptor file
Secara default,Linux Sistem memiliki batasan jumlah deskriptor file yang dapat dibuka oleh setiap proses.
Jika Nginx perlu memproses file dalam jumlah besar (seperti sumber daya statis), Anda mungkin melihat kesalahan dari Nginx, menampilkan "too many open files".
Anda bisa lewat worker_rlimit_nofile Tingkatkan batas deskriptor file, misalnya disetel ke 65535.
worker_rlimit_nofile 65535;
4. Aktifkan caching dan gzip
Caching dan kompresi adalah dua kunci optimasi kinerja website.
Dengan mengaktifkan fungsi caching Nginx, sumber daya statis (seperti gambar dan file JS) dapat di-cache di memori, sehingga sangat mengurangi beban di server.
Selain itu, mengaktifkan fungsi kompresi gzip dapat mengurangi jumlah data yang dikirimkan dan meningkatkan kecepatan situs web.
gzip on;
gzip_types text/plain application/javascript;
5. Analisis penggunaan sumber daya Nginx
Terakhir, jika Anda telah menyelesaikan semua optimasi di atas tetapi Nginx masih menggunakan banyak CPU, Anda mungkin perlu menggunakan beberapa alat untuk analisis mendalam.
使用 top 或 htop Lihat konsumsi sumber daya real-time dari suatu proses,lulus strace Lacak panggilan sistem, atau gunakan nmon Menghasilkan laporan kinerja. Hanya dengan menganalisis secara komprehensif pengoperasian Nginx yang sebenarnya, kita dapat melakukan penyetelan yang lebih tepat.
总结
Jangan panik ketika penggunaan CPU Nginx melonjak. Ini mungkin hanya disebabkan oleh konfigurasi yang tidak tepat atau lalu lintas yang berlebihan.
melalui penyesuaian yang wajar worker_processes 和 worker_connectionsDengan mengaktifkan caching, mengoptimalkan batas waktu, dan deskriptor file, Anda dapat mengurangi tekanan beban pada Nginx secara signifikan.
Nginx adalah server web tangguh yang, bila dioptimalkan dengan benar, dapat memberikan kinerja luar biasa untuk situs web Anda.
Ingat, pertanyaan apa pun bisa dijawab olehilmumetode untuk mengatasinya, tidak terkecuali mengoptimalkan kinerja server.
Pantau dan sesuaikan tepat waktu, adalah kunci untuk menjaga Nginx tetap berjalan efisien. Jika Anda bisa menguasai teknik ini, situs web Anda akan aman bahkan saat menghadapi lalu lintas tinggi atau serangan jahat.
Saya harap artikel ini menginspirasi Anda, buruan optimalkan Nginx Anda!
Harapan Chen Weiliang Blog ( https://www.chenweiliang.com/ ) membagikan "Beban CPU server Nginx, penggunaan memori proses tinggi, apa yang harus saya lakukan?" 》, bermanfaat bagi Anda.
Selamat datang untuk membagikan tautan artikel ini:https://www.chenweiliang.com/cwl-32093.html
Untuk mengungkap lebih banyak trik tersembunyi🔑, selamat datang untuk bergabung di saluran Telegram kami!
Bagikan dan sukai jika Anda menyukainya! Bagikan dan suka Anda adalah motivasi kami yang berkelanjutan!