連接ES的Java項目報Too many open files錯誤


啟動后查詢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給加上了^_^

雖然問題解決了,但是不懂啥原理。有時間還是要研究一下文檔~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM