應用后台報錯zookeeper連接超時,在此之前並沒用出現過此類錯誤,是轉成zookeeper集群后才出現的,(最后發現還是代碼問題)
在zookeeper.out中出現too many connecttion from ^_^ip :顯示我在^_^ip上的某應用請求過度!
[maxClientCnxns]默認值60,對於那些單應用都是足夠得,除非是在此集群上部署了十幾個應用
首先這個連接數不是針對某個ip的,請注意這個限制的使用范圍,
僅僅是單台客戶端機器與單台zookeeper服務器之間的連接數限制,(***)
不是針對指定客戶端IP,也不是zookeeper集群的連接數限制,
也不是單台zookeeper對所有客戶端的連接數限制。
檢查下zk
看看2181端口都誰在鏈接
sudo netstat -nap |grep 2181 發現確實是項目的問題
解決從以下兩個方式:
1.代碼:打補丁,解決zookeeper連接資源,producer.close 、consume.shutdown。
2.配置文件: a.zookeeper默認連接數值60,可以適當調大至500。
b.在配置文件中加入會話超時設置,在conf/zoo.conf最后加上:minSessionTimeout=30000,maxSessionTimeout=60000
雖然會話zookeeper超時在沒有設定時間時會根據ticktime*(2 - 20)ms,來定,但是在實際發現會話在超時后斷掉。
ps 若之后還出現此類問題 應急性的處理方式重啟zookeeper集群,
建議搭建使用zookeeper集群管理平台exhibitor,
功能:
1、檢測ZK實例並確保它正在運行,有自行重啟功能
2、執行定期備份
3、定期清理ZK日志目錄(zookeeper.out)
4、用於查看ZK節點的GUI資源管理器
其實遇到這種情況 99% 都是代碼問題,還是找一下自己代碼問題的好,增加連接數這都是不是什么明智的方法