最近在linux上开发的一个c++项目,存在打开的文件句柄数时而递增的现象,当超过服务器设置的单进程最大文件句柄数时出现进程挂死,解决问题迫在眉睫;
若想知道服务器上设置的单进程最大文件句柄数,可通过命令:
ulimit -n
本身这个项目我掐指一算打开的文件句柄数不会超过100,更加坚定有问题,首先查看当前服务器打开的文件句柄数汇总情况:
/usr/sbin/lsof -n | awk '{print $2}'|sort|uniq -c|sort -nr|more
首先根据汇总情况查看你的服务进程占用了多少个文件句柄,数量上是否有所递增的趋势,若发现递增不减的再细致查看该进程都打开了哪些句柄,使用命令:
/usr/sbin/lsof -p 进程号
解决文件句柄数递增与SOCKET泄露问题

本文介绍了如何排查服务器文件句柄数增加的问题,通过`ulimit -n`检查限制,使用`lsof`命令分析进程占用句柄情况。当发现进程句柄数递增且存在大量无法识别协议的SOCKET时,可能存在SOCKET泄露。检查socket生命周期管理,确保正确关闭或释放资源。
最低0.47元/天 解锁文章
885

被折叠的 条评论
为什么被折叠?



