启动后查询open files 数量
lsof -p TOMCAT_PID | grep wc -l
结果大概是一千多,但是短短数小时后就会涨到8k以上,所以使用网上很多朋友通过执行ulimit -n或修改limits.conf文件增加系统允许打开文件的数量方法未能解决问题。
查看了一下log,发现报的几个异常都和ESClient有关系:
None of the configured nodes are available
见到这个异常,又去找博客,解决办法是初始化client时去掉cluster.name参数。但,问题依旧!
rejected execution (shutting down) on org.elasticsearch.transport.netty.NettyTransport$2@6ea6ba8d
org.elasticsearch.transport.NodeDisconnectedException
接着又见到了这两个异常,查询elasticsearch的连接数量竟然又上千条之多。于是问题定位到了,ES连接数过多。检查代码,每次查询和写入都执行了innitClient()和closeClient()方法,感觉不到有什么逻辑错误或忘记关闭连接的情况。
最后还是咨询了大神,一语道破天机:
于是我将client实例改成单例实现,完美的解决了问题O(∩_∩)O~。
另外大神还说了:
于是我又把去掉的cluster.name给加上了^_^
虽然问题解决了,但是不懂啥原理。有时间还是要研究一下文档~