คำสั่ง“ ss” ในแพ็คเกจ iproute; เหตุใดจึงใช้แบบสอบถามแผ่นตารางสำหรับซ็อกเก็ต timewait


15

ยกโทษให้ฉันถ้านี่ไม่ใช่ฟอรัมที่ดีที่สุดสำหรับคำถามนี้ แต่ดูเหมือนว่าจะเกี่ยวข้องกับเคอร์เนลมากกว่าที่จะเขียนโปรแกรมเอง

ฉันกำลังเขียนสคริปต์ที่สืบค้นระบบสำหรับพอร์ตเปิดเพื่อให้เราสามารถสร้างกราฟและตรวจสอบสถิติได้ สำหรับสิ่งนี้ฉันใช้คำสั่ง "ss" จากแพ็คเกจ iproute หากคุณดำเนินการss -s|grep estabคุณจะได้รับผลลัพธ์เช่นนี้:

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

คำถามของฉันเกี่ยวกับตัวแปร timewait ซึ่งแสดงซ็อกเก็ตที่คำนวณในสถานะ TIME_WAIT เมื่อฉันพยายามหาตัวเลขที่อ้างอิงหลังจากสแลชมันกลายเป็นการผจญภัยในการค้นหาซอร์สโค้ดซึ่งท้ายที่สุดก็ทำให้ฉันพบตัวอย่างต่อไปนี้:

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
       );

ฉันต้องยอมรับว่าการค้นหาสิ่งที่ "slabstat" ควรหมายถึงในที่สุดนำไปสู่การเรียนรู้ของฉันเกี่ยวกับแคชพื้นและส่วนต่อประสานการรายงานที่ / proc / slabinfo

คำถาม: slabtable เกี่ยวข้องกับการคำนวณซ็อกเก็ต TIME_WAIT อย่างไร ฉันไม่ทราบสาเหตุที่จะรายงานหมายเลขนี้เนื่องจากทุกครั้งที่ฉันเรียกใช้คำสั่งในทุกเซิร์ฟเวอร์ที่ฉันได้ลองใช้หมายเลขจะเป็นศูนย์เสมอ


จากความซื่อสัตย์ทั้งหมดคุณอาจได้รับคำตอบที่ดีที่สุดด้วยการโพสต์สิ่งนี้ลงในรายการส่งเมลเคอร์เนลที่เกี่ยวข้องดูtux.org/lkml/#related-lists
jeremiahd

รหัสแสดงจำนวนซ็อกเก็ตที่รออยู่ที่จัดสรรในแผ่นพื้น IMO มันช่วยในการกำหนดการใช้หน่วยความจำ
Ulrich Dangel

คำตอบ:


0

ดูเหมือนว่าtcp_tw_bucketsเป็นสิ่งที่สำรวจในท้ายที่สุดซึ่งเป็น struct ลบออกจาก Linux 2.6.12

ดังนั้นจำนวนสุดท้ายอาจเป็น 0 เสมอยกเว้นว่าจะอยู่ในเมล็ดอายุ 7 ปี

สำหรับการสืบค้นแผ่นพื้นเท่าที่ฉันสามารถบอกได้ว่ามันเร็วกว่าวิธีอื่น ๆ ที่มีอยู่อย่างน่าขัน


หากอยู่บนเคอร์เนลก่อน 2.6.12 ค่าslabstat.tcp_tws จะเท่ากับs.tcp_twsเท่ากันหรือไม่ มีความแตกต่างระหว่างค่าสองค่านี้หรือไม่? (อันหนึ่งมาจาก / proc / net / sockstat และอีกอันมาจาก / proc / slabinfo)
ruanhao
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.