如何确定文件描述符问题是否发生?

在CentOS上运行我的webserver / app服务器(apache / tomcat),今天早上挂了。 在挂起的时候,我注意到在TIME_WAIT或CLOSE_WAIT状态下有大量的套接字。 我试图找出如何更确切地确定是否是由最大的文件描述符,如果是,如果是每个进程的限制,每个用户的限制,或整体的操作系统限制造成的挂起。 什么最好做出这个决定?

sysctl fs.file-nr 

从这个命令你会得到3个数字。 首先是使用的文件描述符的数量,第二个是已分配但未使用的文件描述符的数量,最后是系统最大文件描述符。

检查基于过程的fd信息的另一种方法是

 cat /proc/pid/limits 

您可以检查此过程的各种限制,包括最大打开文件。

这可能是一个很好的开始对fd相关问题进行调查的地方