GNU/Linux >> Belajar Linux >  >> Linux

Perintah “ss” Dalam Paket Iproute; Mengapa Tabel Slab Kueri Untuk Soket Timewait?

Maafkan saya jika ini bukan forum terbaik untuk pertanyaan ini, tetapi tampaknya lebih relevan dengan kernel daripada pemrograman itu sendiri.

Saya sedang menulis skrip yang menanyakan sistem untuk port terbuka sehingga kami dapat membuat grafik dan memantau statistik. Untuk ini, saya menggunakan perintah “ss” dari paket iproute. Jika Anda menjalankan ss -s|grep estab Anda akan menerima output seperti ini:

TCP:   296 (estab 6, closed 238, orphaned 0, synrecv 0, timewait 238/0), ports 0

Pertanyaan saya berkaitan dengan variabel timewait, yang menunjukkan soket yang dihitung dalam status TIME_WAIT. Ketika saya mencoba mencari tahu nomor apa yang dirujuk setelah garis miring, itu menjadi petualangan angin puyuh mencari kode sumber yang akhirnya membuat saya menemukan cuplikan berikut:

printf("TCP:   %d (estab %d, closed %d, orphaned %d, synrecv %d, timewait %d/%d), ports %d\n",
       s.tcp_total + slabstat.tcp_syns + s.tcp_tws,
       sn.tcp_estab,
       s.tcp_total - (s.tcp4_hashed+s.tcp6_hashed-s.tcp_tws),
       s.tcp_orphans,
       slabstat.tcp_syns,
       s.tcp_tws, slabstat.tcp_tws,
       slabstat.tcp_ports
       );

Harus saya akui, pencarian saya untuk apa yang dimaksud dengan "slabstat" akhirnya mengarah pada pembelajaran saya tentang cache slab dan antarmuka pelaporannya di /proc/slabinfo.

Pertanyaannya:Apa hubungan slabtable dengan perhitungan soket TIME_WAIT? Saya tidak tahu mengapa nomor ini dilaporkan, karena setiap kali saya menjalankan perintah di setiap server tempat saya mencobanya, jumlahnya selalu nol.

Jawaban yang Diterima:

Sepertinya tcp_tw_buckets adalah apa yang akhirnya disurvei, yang merupakan struct yang dihapus pada Linux 2.6.12

Jadi angka terakhir mungkin akan selalu 0 kecuali pada kernel berumur 7 tahun.

Untuk kueri slab, sejauh yang saya tahu, ini jauh lebih cepat daripada metode lain yang tersedia.


Linux
  1. Contoh perintah RPM untuk menanyakan, menginstal, menghapus, dan meningkatkan paket

  2. apt:perintah tidak ditemukan

  3. Apakah ada alat baris perintah untuk visualisasi dan analisis data?

  1. Contoh Perintah DNF Untuk Pemula

  2. 15 Contoh Perintah aptitude untuk Manajemen Paket di Linux

  3. Mengapa tidak ada pengelola paket yang benar-benar terpadu untuk Linux?

  1. Membandingkan Perintah Paket NET-TOOLS V/s IPROUTE (perbandingan perintah ip Vs ifconfig)

  2. iptables:perintah tidak ditemukan

  3. rpm:perintah tidak ditemukan