Definisi dan Fungsi net.core.somaxconn
net.core.somaxconn adalah parameter kernel Linux yang menentukan batas maksimum jumlah koneksi TCP yang tertunda (pending connections) dalam antrean listen untuk sebuah socket. Secara teknis, ini membatasi panjang antrean backlog yang dapat diterima oleh aplikasi sebelum kernel mulai menolak koneksi baru (SYN packets) dengan pesan Connection Refused.
Jika aplikasi Anda menangani trafik tinggi, nilai default (seringkali 128 pada distribusi lama) seringkali tidak mencukupi, menyebabkan kegagalan koneksi saat terjadi lonjakan trafik (traffic spikes). Meningkatkan nilai ini memungkinkan server menampung lebih banyak permintaan koneksi yang menunggu untuk diproses oleh aplikasi.
Cara Cek dan Mengubah Nilai
Untuk melihat nilai saat ini, gunakan perintah berikut:
sysctl net.core.somaxconnUntuk mengubah nilai secara sementara (langsung aktif tanpa reboot):
sudo sysctl -w net.core.somaxconn=1024Untuk membuat perubahan permanen, tambahkan baris berikut ke dalam file /etc/sysctl.conf:
net.core.somaxconn = 1024Setelah menyimpan file, jalankan sudo sysctl -p untuk memuat konfigurasi baru.
| Parameter | Fungsi | Rekomendasi Server High-Traffic |
|---|---|---|
| net.core.somaxconn | Batas antrean backlog | 1024 - 4096 |
| net.ipv4.tcp_max_syn_backlog | Antrean SYN yang belum selesai | 2048 - 8192 |
| net.core.netdev_max_backlog | Paket masuk per interface | 5000+ |
Penting: Penyesuaian Aplikasi
Mengubah nilai kernel saja tidak cukup. Aplikasi (seperti Nginx, Apache, atau Node.js) juga memiliki batasan internal untuk backlog. Jika Anda mengatur net.core.somaxconn ke 4096 tetapi konfigurasi Nginx Anda tetap menggunakan nilai default 511, maka sistem akan menggunakan nilai terendah. Pastikan untuk menyesuaikan direktif listen pada konfigurasi aplikasi Anda, contoh pada Nginx:
server { listen 80 backlog=4096; ... }Troubleshooting
Jika Anda masih melihat error Connection Refused meskipun nilai sudah ditingkatkan, periksa log sistem dengan perintah dmesg | grep -i 'TCP: drop' atau netstat -s | grep -i 'listen' untuk melihat apakah ada paket yang dibuang karena antrean penuh.