客戶端程序調用zookeeper報len4807928異常

1、故障分析與解決

1.dubbo-zookeeper註冊中心數據量太大.致使客戶端與其通訊失敗
異常現象圖:

客戶端程序調用zookeeper報len4807928異常

2.異常分析
znode節點上的數據太大,超過長度,程序處理失敗
3.解決方法
在zookeeper客戶端程序啓動start.sh中加入"-Djute.maxbuffer=10240000"增長它的最大容量
參數位置:JAVA_MEM_OPTS="-Djute.maxbuffer=10240000"
加入以後啓動java程序,觀察日誌.無以前異常

2、zookeeper優化說明-設置zookeeper啓動內存大小

1.編輯zookeeper/bin/zkEnv.sh配置文件

客戶端程序調用zookeeper報len4807928異常

該文件已經明確說明有獨立JVM內存的設置文件,路徑是zookeeper/conf/Java.env,安裝的時候這個路徑下沒有有java.env配置文件.需新建
#命令:
cat >>conf/java.env<<EOF
#!/bin/sh
export JAVA_HOME=/usr/java/jdk
# heap size MUST be modified according to cluster environment
# 默認2g,根據機器自身內存大小設置,注意事項下面說明
export JVMFLAGS="-Xms4g -Xmx4g"
EOF
2.堆區參數配置說明
1.-Xms :表示java虛擬機堆區內存初始內存分配的大小,一般爲操做系統可用內存的1/64大小便可,但仍需按照實際狀況進行分配。有可能真的按照這樣的一個規則分配時,設計出的軟件尚未可以運行得起來就掛了。
2.-Xmx: 表示java虛擬機堆區內存可被分配的最大上限,一般爲操做系統可用內存的1/4大小。可是開發過程當中,一般會將 -Xms 與 -Xmx兩個參數的配置相同的值,其目的是爲了可以在java垃圾回收機制清理完堆區後不須要從新分隔計算堆區的大小而浪費資源。 通常來說對於堆區的內存分配只須要對上述兩個參數進行合理配置便可。

注:    
在配置以前必定要慎重的考慮一下自身軟件所須要的非堆區內存大小,由於此處內存是不會被java垃圾回收機制進行處理的地方。而且更加要注意的是 最大堆內存與最大非堆內存的和絕對不可以超出操做系統的可用內存。
相關文章
相關標籤/搜索