GNU/Linux >> Belajar Linux >  >> Linux

Penyetelan Performa Nginx

Nginx adalah server web open-source gratis dengan kinerja tinggi dan bobot rendah, digunakan sebagai penyeimbang beban, proxy terbalik, cache HTTP, dan proxy surat. Meskipun Nginx cukup baru dibandingkan dengan server web lain, popularitasnya meningkat karena kinerjanya yang tinggi. Dengan konfigurasi default Nginx, Anda mungkin mendapatkan kinerja yang cepat, tetapi kami dapat meningkatkan kinerja Nginx lebih banyak lagi dengan mengubah beberapa konfigurasi.

Dalam artikel ini, Anda akan mempelajari 8 cara berbeda untuk meningkatkan kinerja Nginx. Untuk mengilustrasikan contoh dalam artikel ini, saya menginstal Nginx pada sistem Ubuntu 22.04 LTS.

Ubah Proses Pekerja

Semua permintaan server web di Nginx ditangani oleh proses pekerja. Di Nginx, proses pekerja dibuat sebagai beberapa proses pekerja untuk menangani permintaan dan proses master bertanggung jawab untuk mengelola semua proses pekerja dan menganalisis konfigurasi. Dalam konfigurasi default Nginx, parameter proses pekerja diatur ke otomatis, yang memulai proses pekerja tergantung pada inti CPU yang tersedia. Seperti yang direkomendasikan dalam dokumen resmi Nginx, ini adalah cara terbaik untuk menjaga proses pekerja sesuai dengan inti CPU yang tersedia, jadi otomatis adalah parameter yang disarankan. Jika Anda ingin mengetahui berapa banyak inti yang dimiliki prosesor Anda, jalankan saja perintah berikut.

$ grep processor /proc/cpuinfo | wc -l

Anda dapat mengubah nilai default proses pekerja dari file konfigurasi Nginx yang terletak di /etc/nginx/nginx.conf. Jika server Anda mengalami lalu lintas yang lebih tinggi dan Anda perlu menambahkan lebih banyak proses pekerja, sebaiknya tingkatkan server ke lebih banyak prosesor inti.

Meningkatkan Batas Koneksi Pekerja

Koneksi pekerja adalah jumlah total koneksi simultan yang dapat dikelola oleh setiap proses pekerja yang tersedia. Secara default, proses pekerja dapat mengelola 512 koneksi sekaligus. Sebelum mengubah nilai koneksi pekerja, Anda harus memeriksa sistem koneksi maksimal untuk mengizinkan penggunaan perintah berikut untuk memperbarui konfigurasi koneksi yang sesuai.

$ ulimit -n

Untuk meningkatkan Nginx secara maksimal, setel nilai koneksi pekerja ke sistem koneksi maksimal yang diizinkan oleh sistem dalam file nginx.conf.

Menerapkan Kompresi Konten

Untuk kompresi konten web, Nginx menggunakan gzip untuk meningkatkan waktu pengiriman konten dan mengurangi penggunaan bandwidth jaringan. Dalam konfigurasi, Anda dapat menemukan konfigurasi gzip dalam status komentar tetapi Anda dapat menghapus komentar dan memodifikasi gzip sesuai dengan kebutuhan Anda. Karena proses kompresi gzip menggunakan sumber daya sistem jika Anda memiliki sumber daya terbatas, ubah konfigurasi yang sesuai dengannya seperti mengompresi hanya jenis file tertentu, tingkat kompresi, dll.

Menyimpan Konten Statis

Dalam pengembangan web modern ini, sebagian besar konten disajikan secara statis ke browser atau klien sehingga caching file statis akan memuat konten lebih cepat. Ini juga akan mengurangi permintaan koneksi ke Nginx saat konten dimuat dari cache. Untuk memulai proses caching, tambahkan direktif berikut ke file konfigurasi virtual host Nginx Anda.

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;}

Direktif di atas menyimpan file sumber daya selama 30 hari. Anda dapat mengatur tanggal kadaluwarsa cache sesuai kebutuhan Anda.

Buffering

Buffering dapat membuat komunikasi antara klien dan server lebih efisien karena memegang sebagian dari respon sampai buffer terisi. Jika responsnya terlalu tinggi daripada ukuran buffer sebenarnya, Nginx kemudian akan menulis respons ke disk yang dapat menyebabkan masalah kinerja. Anda dapat memperbarui arahan berikut untuk menyesuaikan ukuran buffer sesuai dengan kebutuhan Anda.

Client_body_buffer_size :Ini menentukan ukuran buffer sebenarnya yang digunakan untuk menyimpan data respons klien.

Client_header_buffer_size :Ini mengatur ukuran header klien. Biasanya menyetel nilai ke 1k sudah cukup baik.

Client_max_body_size :Ini membatasi respons tubuh maksimal yang diizinkan untuk klien. Jika ukuran tubuh melebihi nilainya, Nginx akan menampilkan kesalahan dengan “Request Entity Too Large”.

Untuk menyesuaikan ukuran buffering, tambahkan direktif berikut di dalam bagian http.

http {
…
client_body_buffer_size 80k;
client_max_body_size 9m;
client_header_buffer_size 1k;
...
}

Akses Buffer Log

Logging adalah salah satu peran penting dalam men-debug masalah dan mengaudit. Karena logging menyimpan setiap data permintaan yang memengaruhi siklus I/O dan CPU yang mengakibatkan masalah kinerja. Anda dapat mengurangi dampak semacam ini dengan mengaktifkan buffering ke log. Setelah ukuran buffer mencapai batasnya, Nginx menulis konten buffer ke log. Anda dapat mengaktifkan buffering dengan menambahkan parameter buffer dengan nilai ukuran ke direktif access log.

access_log /var/log/nginx/access.log main buffer=16k;

Atau Anda dapat menonaktifkan log akses (jika tidak diperlukan) dengan cara berikut.

access_log off;

Membatasi Nilai Batas Waktu

Membatasi nilai batas waktu akan meningkatkan kinerja Nginx. Nginx akan menunggu permintaan body dan header klien untuk jangka waktu tertentu. Jika mereka tidak menerima data respons tepat waktu, Nginx memicu batas waktu untuk masing-masing klien. Nilai time-out dapat diatur dengan arahan berikut. Untuk mengatur durasi timeout, copy-paste arahan yang diberikan di bawah ini dalam bagian http.

client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 13;
send_timeout 10;

Client body dan header timeout adalah jangka waktu Nginx untuk membaca header dan body dari request client. Jika tidak selesai tepat waktu, permintaan dihentikan dengan kesalahan waktu habis. Keepalive_timeout adalah durasi setelah nginx close koneksi klien keep-alive connection tetap terbuka. Send_timeout adalah durasi klien harus menerima respons yang dikirim oleh Nginx.

Buka Cache File

Di Linux hampir semuanya adalah file, ketika open_file_cache digunakan, deskriptor file dan semua file yang sering diakses di-cache ke server. Terutama saat menyajikan file Html statis menggunakan cache file terbuka akan meningkatkan kinerja Nginx saat membuka dan menyimpan cache dalam memori untuk interval tertentu. Letakkan direktif open_file_cache berikut di bagian http untuk memulai caching.

http {
...
open_file_cache max=1024 inactive=10s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

Kesimpulan

Ini adalah delapan cara untuk meningkatkan kinerja server web Nginx dengan modifikasi sederhana dari file konfigurasi Nginx. Saya harap membaca artikel ini akan membantu Anda meningkatkan pengaturan Ngunx Anda untuk mendapatkan kinerja setinggi mungkin di server, server, atau sistem cloud Anda.


Linux
  1. MySQL – Penyesuaian dan Pengoptimalan Kinerja

  2. nginx - 413 Permintaan Entitas Terlalu Besar

  3. Pemecahan masalah Nginx dasar

  1. Mengapa Pola Awk Tidak Cocok dengan Argumen Konfigurasi Nginx -v?

  2. Instal Nginx di Fedora

  3. getpwnam(www) gagal di /etc/nginx/nginx.conf

  1. Instal Nginx di Ubuntu

  2. kinerja dd di Mac OS X vs. Linux

  3. Opsi penyetelan kinerja sistem file untuk ext3