2010-03-04 9 views
5

Ich habe derzeit ein Problem mit meiner Jgroups-Konfiguration, die dazu führt, dass Tausende von Nachrichten in der NAKACK.xmit_table hängen bleiben. Eigentlich alle von ihnen scheinen in der xmit_table am Ende, und eine andere Deponie von einigen Stunden zeigt später, dass sie auch nie zu verlassen beabsichtigen ...JGroups Eating Speicher

Dies ist die Protokoll-Stack-Konfiguration

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 

Startup Meldung ...

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) 

... zeigt an, dass bis jetzt alles in Ordnung ist.

Die Protokolle, auf warn-Ebene bedeutet nicht, dass etwas nicht stimmt mit Ausnahme der occational

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

, die ich vermute, ich ist nicht verwandt, da sie ohne den Speicher Speicherproblem gesehen früher wurde.

Ich habe durch zwei Speicherabzüge von einer der Maschinen gegraben, um Kuriositäten zu finden, aber bis jetzt nichts. Mit Ausnahme vielleicht einige Statistiken aus den verschiedenen Protokollen

UDP hat

num_bytes_sent 53617832 
num_bytes_received 679220174 
num_messages_sent 99524 
num_messages_received 99522 

während NAKACK hat ...

num_bytes_sent 0 
num_bytes_received 0 
num_messages_sent 0 
num_messages_received 0 

... und eine riesige xmit_table.

Jede Maschine verfügt über zwei JChannel-Instanzen, eine für ehcache und eine für TreeCache. Eine Fehlkonfiguration bedeutet, dass beide die gleiche mcast-Adresse für die Diagnose verwenden, aber dies sollte kein Problem darstellen, wenn ich keine Diagnosemeldungen richtig senden möchte. Allerdings haben sie natürlich unterschiedliche mcast-Adressen für die Nachrichten.

Bitte fragen Sie nach Erklärungen, ich habe viele Informationen, aber ich bin ein wenig unsicher, was an dieser Stelle relevant ist.

Antwort

4

Es stellt sich heraus, dass einer der Knoten im Cluster überhaupt keine Multicast-Nachrichten erhalten hat. Dies hat dazu geführt, dass alle Knoten an ihren eigenen xmit_tables hängen blieben, da sie keine Stabilitätsnachrichten von dem "isolierten" Knoten erhalten haben, dass sie ihre Nachrichten erhalten haben.

Ein Neustart von ASs, Ändern der Multicast-Adresse löste das Problem.