6 Cara Meningkatkan Nginx Performance Tuning

6 Cara Meningkatkan Nginx Performance Tuning

Sekarang Ane akan bahas Nginx Performance Tuning nih, yang katanya penting banget buat bikin server ente jadi kenceng dan nggak lemot. Nah, Nginx ini tuh server proxy terbalik yang bisa nyamperin banyak protokol keren kayak HTTP, HTTPS, SMTP, POP3, sama IMAP. Wah, serba bisa banget ya dia!

Ternyata Nginx ini cukup ngetop juga, meskipun namanya nggak sepopuler Apache. Nyatanya, Nginx ini bersandingan sama Apache dan nyumbang lebih dari 50% lalu lintas internet! Bahkan, Nginx nggak kalah dari Apache buat nge-handle website populer di dunia. Dia nyupirin 45% dari 10.000 website paling top yang penuh pengunjung. Makin penasaran aja sama Nginx ini!

Nginx ini pada awalnya dibikin buat ngehadepin masalah C10K, yang artinya sejutaan koneksi yang harus dihandle secara bersamaan. Susah banget! Tapi Nginx ini dateng dan langsung bikin sensasi. Makanya, dia cepet banget diterima di dunia maya. Bener-bener bikin perubahan!

Meningkatkan Nginx Performance Tuning

Tapi, meskipun Nginx Performance Tuning ini canggih dan keren, ente tetap harus ngurusin dia dengan baik. Nah, berikut ini ada enam tips keren yang bisa ente ikuti untuk memastikan Nginx Performance Tuning berjalan dengan sempurna.

Baca Juga: Configurasi Script Monitoring Nginx Web Server

Memodifikasi Proses Nginx Performance Tuning

Ini dia yang namanya arsitektur proses di Nginx Performance Tuning. Nginx punya satu proses master dan banyak proses pekerja. Proses master ini fungsinya untuk baca, nilai, dan jaga-jagain proses pekerja.

Proses pekerja ini yang betul-betul prosesin request dari client. Pendekatannya berbasis peristiwa dan ngandelin metode OS yang dipake Nginx buat distribusi request yang efektif ke proses pekerja.

Untuk bisa ng-handle request bersamaan dengan efisien, ente perlu instruksikan server virtual berapa banyak core yang dipakein buat tiap CPU. Konfigurasi default-nya ada di /etc/nginx/nginx.conf.

Cek aja dulu berapa banyak prosesor yang ada di server web dengan perintah ini:

grep processor /proc/cpuinfo | wc –l

Angka keluaran ini mengindikasikan CPU dengan satu inti.

Angka keluaran ini nandain CPU dengan satu inti. Nah, kalo mau ikutin praktik standar, yang artinya satu proses pekerja per inti, ente harus atur jadi satu aja di konfigurasi Nginx Performance Tuning.

worker_processes 1;

Kalo mau pake alternatif lainnya, bisa modif di jalur direktori “proses pekerja” di /etc/nginx/nginx.conf.

worker_processes auto;

Maksimum koneksi (TCP Sessions) yang bisa ditangani sama setiap proses pekerja di Nginx. Nah, ini penting banget buat Nginx Performance Tuning, biar semuanya jalan dengan lancar.

Jadi begini, ente bisa tingkatkan Nginx Performance Tuning dengan nambahin jumlah koneksi per pekerja. Nah, kalo pengen tau berapa banyak klien yang bisa dilayani per detik, tinggal kalikan aja jumlah prosesor pekerja sama koneksi pekerja.

Max Number of Clients/Second = Worker processes * Worker connections

Biasanya, standar Nginx Performance Tuning tuh 512. Tapi tau nggak, sebagian besar sistem sebenernya bisa nangani lebih banyak koneksi. Lagian, kebanyakan browser web kan biasanya buka minimal dua koneksi per server. Jadi, jumlahnya bisa dikurangin separonya.

Kalo mau tau berapa banyak file yang bisa dibuka oleh satu proses di sistem, coba deh jalankan perintah ini:

ulimit -a

Nah, buat pake Nginx Performance Tuning yang optimal, jumlah maksimum koneksi pekerja harusnya 1024. Itu konfigurasi yang paling oke buat dipake.

Ayo, ubah konfigurasi utama di /etc/nginx/nginx.conf.

worker_connections 1024;

Meningkatkan Jumlah Koneksi Nginx

Jumlah koneksi Nginx ini ngasih tahu proses pekerja berapa banyak client yang bisa dia tangani sekaligus. Biasanya default-nya itu 768, tapi ente juga harus inget kalo tiap browser itu biasanya buka setidaknya dua koneksi ke server.

Jadi, buat ngasih Nginx Performance Tuning yang maksimal, ente bisa naikin jumlah koneksi pekerja jadi 1024. Dengan begitu, bisa nyamperin 1024 client per detik sambil asumsi-in satu inti buat tiap proses pekerja.

Aktifkan Kompresi Gzip

Ini dia, kompresi yang bikin file jadi lebih kecil dan cepet banget buat diunggah. Ada program namanya Gzip yang bisa ngompres dan ngurangin ukuran file. Kejutan lagi, mayoritas server sama klien juga dukung Gzip ini. Jadi, server bakal ngompres respons sebelum dikirim ke browser kalo browser-nya yang kompatibel minta file itu.

Kalo mau bikin Nginx Performance Tuning server makin wah, bisa ikutin praktik Nginx Performance Tuning dengan mengaktifkan Gzip di pengaturan Nginx. Caranya simpel banget, tinggal ikutin langkah-langkah berikut ini. Ente bisa buat direktori baru di /etc/nginx/conf.d/gzip.conf, trus masukin kode-kode ini:

gzip on;

gzip_proxied any;

gzip_types text/plain text/xml text/css application/x-javascript;

gzip_vary on;

gzip_disable “MSIE [1-6]\.(?!.*SV1)”;

Abis itu, restart server. Setelah itu, aset-aset situs bakal dikompres pake Gzip yang tadi ente aktifin.

site with gzip compression

Atau, bisa coba yang alternatif ini juga

server { ... gzip on; gzip_vary on; gzip_min_length 10240; gzip_proxied expired
no-cache no-store private auth; gzip_types text/plain text/css text/xml 
text/javascript application/x-javascript application/xml; 
gzip_disable "MSIE [1-6]\."; ... }

Ini dia penjelasannya baris per baris:

  • Ngaktifin kompresi Gzip dengan ngetik “gzip on”.
  • Kalo udah diaktifin, Gzip bakal nyuruh proxy buat nge-cache versi sumber daya yang udah dikompres dan yang belum dikompres.
  • Nginx diperintahin buat nggak kompres apa pun yang ukurannya lebih kecil dari nilai yang ditentuin di gzip min length 1024.
  • gzip proxied; itu maksudnya data dikompres bahkan buat client yang nyambung lewat proxy. Jadi, kompresi diaktifin kalo respons-nya ada header yang ngandung “expired”, “no-cache”, “no-store”, “private,” dan “Authorization”.
  • Jenis file yang bisa dikompres ditentuin oleh gzip types.
  • Terakhir, ente matiin kompresi buat Internet Explorer versi 1-6 dengan perintah gzip disable; – “MSIE [1-6]”.

Modifikasi Buffers Size

Buffer di Nginx ini penting banget. Kalo ukuran buffer-nya terlalu kecil, Nginx bakal tulis ke file sementara terus-terusan. Akibatnya, operasi I/O disk-nya makin sibuk. Jadi, ente harus atur ukuran buffer-nya dengan pas biar bisa ngatasi hal itu.

Buatin ente ukuran buffer yang pas dengan ngubah pengaturan ini di file /etc/nginx/nginx.conf:

http{ ... client_body_buffer_size 10K; client_header_buffer_size 1k; 
client_max_body_size 8m; large_client_header_buffers 4 4k; ... }
  • Client_body_buffer_size: Atur ukuran buffer buat baca badan permintaan dari client. Kalo badannya lebih gede dari ukuran buffer, sebagian badan atau semua badannya bakal ditulis ke file sementara.
  • Client_header_buffer_size: Ini ukuran buffer buat baca header permintaan dari client.
  • Client_max_body_size: Ini batasin ukuran maksimum dari badan permintaan client. Kalo badannya lebih gede dari batas ini, ente bakal ngasih error 413 (Entitas Permintaan Terlalu Besar) ke client.
  • Large_client_header_buffers: Nah, ini buat nentuin berapa buffer buat header client yang besar. Kalo baris permintaannya lebih panjang dari satu buffer, bakal ngasih error 414 (Permintaan-URI Terlalu Besar) ke client.

Mengaktifkan Cache File Statis

aching itu teknik buat nyimpen halaman web sementara biar ngirit bandwidth dan ngasih kinerja yang lebih baik. Kalo nggak ada perubahan dari waktu sebelumnya, pengunjung bakal liat versi yang udah disimpen. Makin cepet dan makin lancar, kan?

Ente bisa tambahin perintah-perintah berikut di konfigurasi Nginx Performance Tuning buat nge-instruksikan server buat nyimpen file-file statis biar bisa diakses lebih cepet. Biasanya ini ada di:

etc/nginx/sites-available/sitename

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {

expires 365d;
}

Membatasi Waktu Server

Waktunya ngebatasi server! Waktu akses peramban ini bisa ente pake buat bikin judul kedaluwarsa dengan tanggal 365 hari ke depan buat file .jpg, .jpeg, .png, .gif, .ico, .css, dan .js.

Timeout juga penting banget buat Nginx Performance Tuning! Kalo koneksi keepalive diaktifin, itu bakal ngurangin penggunaan CPU dan jaringan buat buka-tutup koneksi terus-terusan.

Kalo pengen performa yang oke, ente bisa ubah pengaturan ini di /etc/nginx/nginx.conf:

http { ... client_body_timeout 12; client_header_timeout 12; keepalive_timeout
15; send_timeout 10; ... }

  • Client_header_timeout: Batas waktu buat baca header permintaan dari client. Kalo client nggak kirim header lengkap dalam jangka waktu ini, ente bakal ngasih error 408 (Request Time-out).
  • Client_body_timeout: Ini batas waktu buat baca badan permintaan dari client. Jadi, batas waktunya cuma buat interval antara dua operasi baca berikutnya, nggak buat transmisi seluruh badan permintaan. Kalo client nggak ngirim apa-apa selama periode ini, ente bakal ngasih error 408 (Request Time-out).
  • Keepalive_timeout: Ini batas waktu buat koneksi keep-alive, yang artinya berapa lama koneksi klien bisa tetep aktif.
  • Send_timeout: Nah, ini batas waktu buat ngirim respons ke client pake fungsi batas waktu kirim. Koneksi bakal putus kalo client nggak denger kabar dari server dalam waktu ini.

Nonaktifkan Log Akses

Setiap operasi yang dilakuin oleh Nginx bakal direkam di file log yang namanya “access.log”. Kalo nggak butuh informasi itu, ente bisa matiin pencatatan log-nya. Hemat banget, kan, bisa ngirit pemrosesan ekstra dan ruang hard disk.

Caranya simpel banget, tinggal tambahin kondisi off di samping sintaks buat access log:

access_log off;

Kalo tetep butuh pencatatan akses, ente bisa aktifin buffering buat access log. Dengan gitu, Nginx bisa tulis beberapa entri log ke file log sekaligus, nggak perlu ngurusin operasi tulis tiap permintaan.

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

Gunakan Monitis untuk Mengawasi Server Nginx

Nah, kalo mau monitor server Nginx secara real-time, Monitis bisa jadi pilihan yang oke banget! Monitis ini jasa monitoring situs web dan server yang terbaik dan paling keren. Ente bisa pantau infrastruktur kapan aja dan di mana aja sesuai keinginan.

Makanya, kenapa nggak pake Monitis buat ngawasin server Nginx? Ente bisa kurangi stres dan ribet dengan akses ke data kinerja server yang real-time di lingkungan cloud. Jadi, bisa identifikasi masalah sebelum klien nangkep masalahnya.

Dengan Monitis, ente bisa fokus ke pengelolaan bisnis dengan pastiin infrastruktur server jalan dengan lancar dan efisien.

All-in-one monitoring

Baca Juga: Panduan Lengkap Install Nginx Ubuntu 20.04

Konfigurasi Dukungan untuk HTTP/2

Terakhir, ente harus ngikutin arah perkembangan dan dukungan teknologi terbaru, yaitu HTTP/2. Protokol HTTP/2 ini digunakan buat ngelancarin pemuatan aplikasi web dengan ngurangin latensi, ngurangin overhead protokol, dan ngasih dukungan buat prioritas permintaan.

Jadi, penting banget buat ngikutin metode dan strategi buat meningkatkan Nginx Performance Tuning. HTTP/2 punya tujuan utama buat ngasih pemuatan halaman web yang lebih cepet secara keseluruhan sama ngasih kinerja yang lebih baik. Karena HTTP/2 pake enkripsi SSL/TLS, ini juga ngasih perhatian khusus ke penggunaan jaringan dan sumber daya server serta keamanan yang lebih baik.

Pastiin pake Nginx versi 1.9.5 atau yang lebih baru karena udah dibikin dengan modul ngx http v2. Kalo nggak, ente harus tambahin modul itu secara manual dan server harus aktifin SSL/TLS.

Buat server HTTPS, ubah konfigurasinya kayak gini:

server { listen 443 ssl http2; ... #Removing Old and Insecure Cipher Suites 
if available and add the following. 
ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:
EECDH+3DES:RSA+3DES:!MD5; }

Baca Juga: Cara Install WordPress Nginx Ubuntu 20.04 LEMP

Kesimpulan

Nah, itulah tadi tips-tips buat meningkatkan Nginx Performance Tuning. Mudah-mudahan bermanfaat! Kalo masih ada pertanyaan atau saran, jangan ragu buat tambahin di kolom komentar ya.

Baca itu Gak Ada Ruginya

BACA JUGA INI