Dalam kernel Linux, Protokol TCP/IP mempertahankan koneksi dalam status TIME-WAIT selama 60 detik. Secara default, durasi ini tidak dapat diubah. Dalam skenario dengan beban kerja TCP yang tinggi, mengurangi nilai ini dapat meningkatkan kinerja jaringan. Oleh karena itu, Alibaba Cloud Linux 2 (mulai dari versi kernel 4.19.43-13.al7) dan Alibaba Cloud Linux 3 menyediakan antarmuka kernel untuk mengubah durasi TCP TIME-WAIT, membantu meningkatkan kinerja jaringan dan pemanfaatan sumber daya.
Konfigurasi sistem ini sudah tidak digunakan lagi di Alibaba Cloud Linux 4.
Informasi latar belakang
TIME-WAIT adalah status transisi soket dalam stack TCP/IP. Setelah aplikasi menutup soket, soket tetap berada dalam status TIME-WAIT dan terbuka selama 60 detik untuk memastikan transmisi data server-klien sepenuhnya selesai. Jika banyak koneksi TCP berada dalam status TIME-WAIT, kinerja jaringan mungkin terganggu. Alibaba Cloud Linux menyediakan antarmuka kernel untuk mengubah timeout TCP TIME-WAIT guna meningkatkan kinerja jaringan dalam skenario tertentu, seperti skenario dengan konkurensi tinggi. Timeout TCP TIME-WAIT menunjukkan periode waktu selama koneksi TCP tetap berada dalam status TIME-WAIT. Nilai dari antarmuka kernel berkisar antara 1 hingga 600, dengan satuan detik.
Catatan penggunaan
Mengatur waktu habis TCP TIME-WAIT kurang dari 60 detik dapat melanggar pembatasan waktu tenang TCP/IP, menyebabkan data lama diterima sebagai data baru atau data baru yang diduplikasi ditolak sebagai data lama. Kami menyarankan Anda mengubah waktu habis TCP TIME-WAIT berdasarkan panduan teknisi Alibaba Cloud. Untuk informasi lebih lanjut tentang waktu tenang TCP/IP, lihat IETF RFC 793.
Jumlah koneksi dalam status TIME-WAIT pada Alibaba Cloud Linux mungkin lebih tinggi dibandingkan distribusi lainnya, seperti CentOS 7. Hal ini normal dan disebabkan oleh perbedaan versi kernel serta pengaturan parameter, seperti `tcp_tw_reuse` (untuk informasi lebih lanjut, lihat Optimasi Konfigurasi Sistem) dan `tcp_tw_recycle` (untuk informasi lebih lanjut, lihat Perbedaan antara Alibaba Cloud Linux 3 dan CentOS 7).
Dalam konfigurasi default Alibaba Cloud Linux, jumlah koneksi dalam status TIME-WAIT tidak melebihi 5.000. Dampaknya terhadap kinerja jaringan dapat diabaikan.
Metode konfigurasi
Anda dapat menggunakan salah satu metode berikut untuk mengubah waktu habis TCP TIME-WAIT. Dalam perintah yang digunakan, ganti [$TIME_VALUE] dengan nilai yang sesuai.
Saat mengubah waktu habis TCP TIME-WAIT ([$TIME_VALUE]), layanan bisnis Anda mungkin menjadi tidak tersedia atau mengalami gangguan. Disarankan untuk melakukan operasi ini selama jam-jam sepi.
Gunakan perintah
sysctluntuk mengubah timeout TIME-WAIT. Perubahan ini berlaku segera tetapi tidak bertahan setelah restart sistem.sudo sysctl -w "net.ipv4.tcp_tw_timeout=[$TIME_VALUE]"Gunakan perintah
echountuk menulis nilai ke file/proc/sys/net/ipv4/tcp_tw_timeout. Perubahan ini berlaku segera tetapi tidak bertahan setelah restart sistem.sudo sh -c "echo [$TIME_VALUE] > /proc/sys/net/ipv4/tcp_tw_timeout"Edit file
/etc/sysctl.confuntuk mengubah parameternet.ipv4.tcp_tw_timeout. Perubahan ini berlaku segera dan bertahan setelah restart sistem. Langkah-langkahnya adalah sebagai berikut:Jalankan perintah berikut untuk membuka file sysctl.conf:
sudo vim /etc/sysctl.confTekan tombol I untuk masuk ke mode Insert. Tambahkan atau modifikasi baris berikut di akhir file:
net.ipv4.tcp_tw_timeout = [$TIME_VALUE]Tekan tombol
Esc, masukkan:wq, lalu tekan tombolEnteruntuk menyimpan file dan keluar.Jalankan perintah berikut agar perubahan berlaku:
sudo sysctl -pJalankan perintah berikut untuk mendapatkan nilai saat ini dari parameter net.ipv4.tcp_tw_timeout:
sysctl net.ipv4.tcp_tw_timeout
Anda dapat menjalankan perintah netstat -ant | grep TIME_WAIT | wc -l untuk memeriksa apakah ada banyak koneksi singkat di server.
Jika ada banyak koneksi singkat, seperti ketika proxy layer-7 dikonfigurasikan untuk NGINX, kami menyarankan Anda mengganti [$TIME_VALUE] dengan 5 untuk mengatur timeout TCP TIME-WAIT menjadi 5 detik.