Hãy tha thứ cho tôi nếu đây không phải là diễn đàn tốt nhất cho câu hỏi này, nhưng nó có vẻ phù hợp với kernel hơn là với chính chương trình.
Tôi đang viết một kịch bản truy vấn hệ thống cho các cổng mở để chúng ta có thể vẽ biểu đồ và theo dõi số liệu thống kê. Đối với điều này, tôi đang sử dụng lệnh "ss" từ gói iproute. Nếu bạn thực hiện, ss -s|grep estab
bạn sẽ nhận được đầu ra tương tự như sau:
TCP: 296 (estab 6, closed 238, orphaned 0, synrecv 0, timewait 238/0), ports 0
Câu hỏi của tôi liên quan đến biến timewait, trong đó hiển thị các ổ cắm được tính toán ở trạng thái TIME_WAIT. Khi tôi cố gắng tìm ra con số nào được tham chiếu sau dấu gạch chéo, nó trở thành một cuộc phiêu lưu tìm kiếm mã nguồn cuối cùng khiến tôi tìm thấy đoạn trích sau:
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
);
Tôi phải thừa nhận, việc tôi tìm kiếm "slabstat" có nghĩa là gì cuối cùng đã dẫn đến việc tôi tìm hiểu về bộ đệm và giao diện báo cáo của họ tại / Proc / slabinfo.
Câu hỏi: Slabtable phải làm gì với các tính toán ổ cắm TIME_WAIT? Tôi không thể hiểu tại sao con số này được báo cáo, vì mỗi lần tôi chạy lệnh trên mọi máy chủ tôi đã thử, con số này luôn bằng không.