JGroups吃着记忆

时间:2010-03-04 07:54:21

标签: jgroups

我目前的jgroups配置存在问题,导致数千条消息卡在NAKACK.xmit_table中。实际上所有这些似乎最终都在xmit_table中,而几个小时后的另一个转储表明它们从未打算离开......

这是协议栈配置

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)

...表示到目前为止一切都很好。

设置为警告级别的日志并不表示除了隐藏

之外的某些内容是错误的
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地址。

请求澄清,我有很多信息,但我对此处的相关内容有点不确定。

1 个答案:

答案 0 :(得分:4)

事实证明,集群中的一个节点根本没有收到任何多播消息。这导致所有节点都挂起到他们自己的xmit_tables,因为他们没有从'isolated'节点获得任何稳定性消息,声明它已收到他们的消息。

重新启动AS,更改多播地址解决了这个问题。