Topik ini menjelaskan penyebab dan solusi untuk masalah di mana nilai kembalian Send-Q adalah 0 setelah menjalankan perintah ss pada instance Elastic Compute Service (ECS) Alibaba Cloud Linux 2.
Deskripsi masalah
Setelah menjalankan perintah ss -lnt pada instance ECS dengan konfigurasi berikut, nilai kembalian parameter Send-Q adalah 0:
Versi gambar:
aliyun-2.1903-x64-20G-alibase-20190507.vhdatau lebih lama.Versi kernel:
4.19.43-13.al7.x86_64atau lebih lama. Anda dapat menjalankan perintahuname -runtuk memeriksa versi kernel.
Keluaran perintah serupa dengan berikut ini:
# ss -lnt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 0 *:35107 *:*
LISTEN 0 0 *:38727 *:*
LISTEN 0 0 *:5355 *:*
LISTEN 0 0 *:111 *:*Dalam perintah ss, parameter Send-Q menunjukkan ukuran maksimum dari syn backlog untuk soket TCP yang sedang mendengarkan. Di Linux, nilai kembaliannya adalah ukuran antrian maksimum untuk semua koneksi pada listening socket dan tidak boleh menjadi 0.
Penyebab
Modul tcp_diag tidak terintegrasi ke dalam versi kernel kernel-4.19.43-13.al7.x86_64 atau lebih lama. Akibatnya, perintah ss pada instance tersebut jatuh kembali ke mode /proc/net/tcp. Saat mode ini (tidak direkomendasikan) digunakan, nilai tx_queue dari listening TCP Socket dalam keluaran perintah ss -lnt adalah 0, menyebabkan nilai kembalian Send-Q juga menjadi 0.
Solusi
Peningkatan kernel dapat menyebabkan masalah kompatibilitas dan stabilitas. Tinjau fitur kernel dalam catatan rilis untuk Alibaba Cloud Linux 2 dan berhati-hatilah saat meningkatkan versi kernel.
Operasi restart sementara menghentikan instance, yang dapat mengganggu layanan yang sedang berjalan dan menyebabkan hilangnya data. Oleh karena itu, cadangkan data penting instance dan kemudian restart instance selama jam-jam sepi.
Periksa modul
tcp_diag.sudo lsmod | grep tcp_diagTingkatkan kernel ke versi terbaru.
sudo yum update kernelMulai ulang instance agar versi kernel baru berlaku.
sudo reboot