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

в то время как НАКАК...

num_bytes_sent 0
num_bytes_received 0
num_messages_sent 0
num_messages_received 0

... и огромный xmit_table.

На каждой машине есть два экземпляра JChannel, один для ehcache и один для TreeCache. Неправильная конфигурация означает, что оба они используют один и тот же диагностический адрес mcast, но это не должно создавать проблемы, если я не хочу отправлять диагностические сообщения, верно? Однако они, конечно, имеют разные адреса mcast для сообщений.

Пожалуйста, попросите разъяснений, у меня много информации, но я немного не уверен в том, что актуально на данный момент.


person Sebastian Ganslandt    schedule 04.03.2010    source источник


Ответы (1)


Получается, что одна из нод в кластере вообще не получала мультикаст-сообщений. Это заставило все узлы цепляться за свои собственные таблицы xmit_tables, поскольку они не получали никаких сообщений о стабильности от «изолированного» узла, утверждающего, что он получил их сообщения.

Проблема решилась перезапуском AS, изменением multicast-адреса.

person Sebastian Ganslandt    schedule 10.03.2010