如果这不是解决此问题的最佳论坛,请原谅我,但它似乎与内核有关,而不是与编程本身有关。
我正在编写一个脚本,用于查询系统的开放端口,以便我们可以绘制图形并监视统计信息。为此,我使用了iproute软件包中的“ ss”命令。如果执行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”的理解最终导致了我对/ sproc / slabinfo中的slab缓存及其报告接口的了解。
问题:可伸缩表与TIME_WAIT套接字计算有什么关系?我无法弄清楚为什么会报告此数字,因为每次我在尝试过的每台服务器上运行命令时,该数字始终为零。
老实说
—
jeremiahd
该代码仅显示了在平板中分配了多少个等待套接字。IMO它只是帮助确定内存的使用情况
—
乌尔里希Dangel