Apa yang harus saya lakukan jika server Nginx memiliki beban CPU yang tinggi dan penggunaan memori proses?

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

Apa yang harus saya lakukan jika server Nginx memiliki beban CPU yang tinggi dan penggunaan memori proses?

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 4 Atau atur langsung ke auto.

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

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

  2. Mendirikan worker_processes: Ditemukan di file konfigurasi events blok, pengaturan worker_processes nilai. jika tidak events blok, 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.

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

发表 评论

Alamat email Anda tidak akan dipublikasikan. 必填 项 已 用 * 标注

Gulir ke Atas