啟動后查詢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給加上了^_^
雖然問題解決了,但是不懂啥原理。有時間還是要研究一下文檔~
