lsof 非常多的连接

提问参考模版:

  • nebula 版本:2.0.0
  • 部署方式(分布式 / 单机 / Docker / DBaaS):docker swarm

执行lsof -p pid |wc -l 查看storage进程只有上万个
执行lsof pid >lsof.txt,然后执行more lsof.txt|grep 4169|wc -l命令查看storage有非常多的连接,上百万个

执行命令more lsof.txt|grep 4169|grep ESTABLISHED|wc -l,像这样的进10w,其他的暂时没有统计

nebula-st  4169             root  801u     IPv6          198562252        0t0        TCP ip1:9779->ip2:42156 (ESTABLISHED)
nebula-st  4169             root  802u     IPv6          198436299        0t0        TCP ip1:9779->ip3:38129 (ESTABLISHED)
nebula-st  4169             root  803u     IPv6          198533688        0t0        TCP ip1:9779->ip4:34959 (ESTABLISHED)
nebula-st  4169             root  804u     IPv6          198533690        0t0        TCP ip1:9779->ip5:33951 (ESTABLISHED)

像这样单个进程上百万正常吗

我研究了下,数据应该以lsof -p pid 为准。直接使用lsof不加限制,如果有100个session那么文件连接数会放大100倍,但实际上他们文件描述符(FD)是共享的。

看上去是平均一个 storaged 有 100 多个 TCP 链接? graphd 有多少个? SQL 并发高吗?

要是说底层文件也算上, 那一个 storaged 打开上百个 fd 也正常吧.

底层文件不止100,底层文件1wX100session,差不多这样,正好100w左右,正好对应(lsof -p pid)x100

nebula 底层有 raft, 然后再下层有 wal(这是每个 partition 都有一个的), 都会占 FD 的. 还不算 rocksdb 占的 .

1 个赞

浙ICP备20010487号