Tomcat服务故障排查:打开文件过多

现象

lsof -p 进程号后出现一堆sock类型的文件。超过了ulimit的限定值。导致一些请求处理失败。


java    26851 jboss5 *165u     sock                0,7        0t0 207976628 protocol: TCPv6
java    26851 jboss5 *166u     sock                0,7        0t0 207967655 protocol: TCPv6
java    26851 jboss5 *167u     sock                0,7        0t0 207965389 protocol: TCPv6
java    26851 jboss5 *168u     sock                0,7        0t0 207969159 protocol: TCPv6
java    26851 jboss5 *169u     sock                0,7        0t0 207965391 protocol: TCPv6
java    26851 jboss5 *170u     sock                0,7        0t0 207965476 protocol: TCPv6
java    26851 jboss5 *171u     sock                0,7        0t0 207967667 protocol: TCPv6
java    26851 jboss5 *172u     sock                0,7        0t0 207967668 protocol: TCPv6

排查

问题的核心是,是什么导致了这么多sock文件?查询这个sock文件的两端。发现都是JAVA内部的线程在进行通信。

java      26851           jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12730     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12731     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12733     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12737     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12738     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12739     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12740     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12741     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12742     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12743     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12744     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12745     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12746     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12747     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12750     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12751     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12752     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12754     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12757     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12759     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12762     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12763     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 12765     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19760     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19764     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19765     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19766     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19770     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19771     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19772     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19773     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19774     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19775     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19776     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19777     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19778     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19779     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19781     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19784     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19785     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19786     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19787     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19788     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19791     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19792     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19794     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19796     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19797     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19798     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19799     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19802     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19804     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19805     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19808     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19811     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19813     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19814     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19816     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19819     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19884     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19885     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19890     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19891     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 19894     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26852     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26853     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26854     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26855     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26856     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26857     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26858     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26859     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26860     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26861     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26862     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26863     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26864     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26865     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26866     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26867     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26871     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26872     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26873     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26875     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26876     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26877     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26882     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26883     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26884     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26885     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26886     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26887     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26888     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26889     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26890     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26891     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26892     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26895     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26896     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26897     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26898     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26900     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26903     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26904     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26906     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26907     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26908     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26909     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26912     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26913     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26914     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26915     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 26997     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 27226     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 27227     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 30342     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 30343     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 30345     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 32050     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 32051     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 32056     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6
java      26851 32057     jboss5 *470u     sock                0,7        0t0 208006882 protocol: TCPv6

看样子是用于内部通信的。共计123个线程使用了该sock。查看java里的所有线程数目,恰巧也是123个。这意味着所有线程都会使用该sock吗?其实并不是。因为所有线程会共享其所有的资源。
另外,我们检查了该进程一共拥有4419个网络连接。其中绝大部分都是和redis连接相关。这个会是根源吗?
毫无头绪,只能重启以下。先解决问题。重启后打开文件数目降到了只有4百多个。持有对redis的网络连接是2200个。我们的redis正好是22个节点。持有的sock文件减少到了2个。决定跟踪这个数字,来检查究竟是什么导致了这个问题。

你可能感兴趣的:(故障排查)