Dmitry
unread,Oct 16, 2024, 3:41:43 AM10/16/24Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to jgroups-dev
We're running JGroups 4.2.30 cluster of approximately 50 nodes on a fairly complicated (multiple switches, media converters) 1Gb network. Here is the stack configuration:
<UDP
mcast_port="45588"
ip_ttl="4"
tos="8"
ucast_recv_buf_size="5M"
ucast_send_buf_size="5M"
mcast_recv_buf_size="5M"
mcast_send_buf_size="5M"
max_bundle_size="64K"
enable_diagnostics="true"
thread_naming_pattern="jgroup"
logical_addr_cache_max_size="200"
thread_pool.min_threads="0"
thread_pool.max_threads="500"
thread_pool.keep_alive_time="6000"/>
<PING />
<MERGE3 max_interval="2000"
min_interval="1000"
check_interval="3000"/>
<FD_SOCK/>
<FD_ALL
interval="1000"
timeout="3000"
timeout_check_interval="1500"
/>
<VERIFY_SUSPECT timeout="100" />
<pbcast.NAKACK2 xmit_interval="500"
xmit_table_num_rows="100"
xmit_table_msgs_per_row="2000"
xmit_table_max_compaction_time="30000"
use_mcast_xmit="true"
discard_delivered_msgs="true"/>
<UNICAST3 xmit_interval="500"
xmit_table_num_rows="100"
xmit_table_msgs_per_row="2000"
xmit_table_max_compaction_time="60000"
conn_expiry_timeout="0"/>
<pbcast.STABLE desired_avg_gossip="50000"
max_bytes="4M"/>
<pbcast.GMS
join_timeout="5000"/>
<FRAG2 frag_size="60K" />
<RSVP resend_interval="2000" timeout="10000"/>
Every few days, we see UDP packet loss that results in message retransmissions by JGroups. Once this happens, the volume of retransmissions quickly increases, reaching values the network cannot handle. The cluster goes belly-up at this point and does not recover even if normal (non-retransmission) traffic becomes very low.
Looking through the logs, we found two issues.
We saw a lot of " JGRP000032: no physical address for ..., dropping message" errors that prevented unicast messages that are a part of cluster merging procedure from being sent.
The second problem is that multiple nodes are repeatedly requesting retransmissions of the same messages, overwhelming the network. We tried to address this by setting use_mcast_xmit=true. This didn't help at all since NAKACK2 was still retransmitting in response to every request from every node. We added code to NAKACK2 that ignores retransmission requests if a request for the same set of messages was processed less that (xmit_interval/2) ago. This helped a lot in preventing retransmission storms, but didn't eliminate them entirely.
We would appreciate advice, particularly on how to prevent retransmissions from growing indefinitely and eventually swamping the network. Does our change to NAKACK2 looks reasonable, or is there a better way to suppress duplicate retransmissions in response to requests from multiple nodes? Is upgrading to JGroups5 likely to buy us anything?