2010-03-04 104 views
5

我目前有一個問題,我的jgroups配置,導致成千上萬的消息卡在NAKACK.xmit_table。其實所有的人都似乎在xmit_table結束了,從幾個小時,另一轉儲後表示,他們從來沒有打算要麼離開......JGroups吃內存

這是協議棧配置

UDP(bind_addr=xxx.xxx.xxx.114; 
bind_interface=bond0; 
ip_mcast=true;ip_ttl=64; 
loopback=false; 
mcast_addr=228.1.2.80;mcast_port=45589; 
mcast_recv_buf_size=80000; 
mcast_send_buf_size=150000; 
ucast_recv_buf_size=80000; 
ucast_send_buf_size=150000): 
PING(num_initial_members=3;timeout=2000): 
MERGE2(max_interval=20000;min_interval=10000): 
FD_SOCK: 
FD(max_tries=5;shun=true;timeout=10000): 
VERIFY_SUSPECT(timeout=1500): 
pbcast.NAKACK(discard_delivered_msgs=true;gc_lag=50;retransmit_timeout=600,1200,2400,4800;use_mcast_xmit=true): 
pbcast.STABLE(desired_avg_gossip=20000;max_bytes=400000;stability_delay=1000):UNICAST(timeout=600,1200,2400): 
FRAG(frag_size=8192):pbcast.GMS(join_timeout=5000;print_local_addr=true;shun=true): 
pbcast.STATE_TRANSFER 

啓動消息...

2010-03-01 23:40:05,358 INFO [org.jboss.cache.TreeCache] viewAccepted(): [xxx.xxx.xxx.35:51723|17] [xxx.xxx.xxx.35:51723, xxx.xxx.xxx.36:53088, xxx.xxx.xxx.115:32781, xxx.xxx.xxx.114:32934] 
2010-03-01 23:40:05,363 INFO [org.jboss.cache.TreeCache] TreeCache local address is 10.35.191.114:32934 
2010-03-01 23:40:05,393 INFO [org.jboss.cache.TreeCache] received the state (size=32768 bytes) 
2010-03-01 23:40:05,509 INFO [org.jboss.cache.TreeCache] state was retrieved successfully (in 146 milliseconds) 

...表示目前一切正常。

日誌,設置爲警告級別並不表明什麼是除occational

2010-03-03 09:59:01,354 ERROR [org.jgroups.blocks.NotificationBus] exception=java.lang.IllegalArgumentException: java.lang.NullPointerException 

,我猜是無關,因爲前面已經沒有了記憶內存問題看作是錯誤的。

我一直在從一臺機器上挖掘兩個內存轉儲來發現奇怪的東西,但沒有到目前爲止。除了從不同的協議也許有人統計

UDP具有

num_bytes_sent 53617832 
num_bytes_received 679220174 
num_messages_sent 99524 
num_messages_received 99522 

而NAKACK有...

num_bytes_sent 0 
num_bytes_received 0 
num_messages_sent 0 
num_messages_received 0 

...和巨大的xmit_table。

每臺機器都有兩個JChannel實例,一個用於ehcache,一個用於TreeCache。配置錯誤意味着它們都共享相同的診斷mcast地址,但是除非我想正確地發送診斷消息,否則這不會造成問題。但是,他們當然有不同的消息mcast地址。

請要求澄清,我有很多的信息,但我有點不確定在這一點上什麼是相關的。

回答

4

事實證明,集羣中的其中一個節點根本沒有收到任何多播消息。這導致所有節點掛在自己的xmit_tables上,因爲它們沒有從「隔離」節點獲得任何穩定性消息,表明它已收到它們的消息。

重啓AS,改變組播地址解決了問題。