求助 为啥 lsof | wc -l 出来的结果远大于 ulimits -n 设置的 kernel 参数?

2022-01-14 18:07:16 +08:00
 richarddingcn

最近测试服务器的 websocket 总是主动断开导致 client 报 1006 我们怀疑是 file descriptor 的数量超了 现在服务器的 ulimits -n 设置成了 100001 但是 lsof | wc -l 中显示有 20w 以上的结果 让人感觉非常疑惑 求助各位大佬能帮忙答疑解惑了

1041 次点击
所在节点    问与答
3 条回复
x1596357
2022-01-14 18:25:37 +08:00
其他用户的加在一起?
richarddingcn
2022-01-14 18:43:11 +08:00
@x1596357 不是 hard limit 是 100001 我查到原因了 lsof 的结果还有内存中的文件数量 超过 hard limit 正常
hahahahahahahah
2022-01-14 21:15:51 +08:00
losf 命令虽然作用是"list open files",但用 lsof | wc -l 统计打开文件数上非常不准确。主要原因是:

某些情况下,一行可能显示的是线程,而不是进程,对于多线程的情况,就会误以为一个文件被重复打开了很多次
子进程会共享 file handler

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/828298

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX