Размер сообщения jgroups больше максимального пакета? неправильно фрагментируется?

[ОШИБКА] [2014-08-28 07:09:17.100] не удалось отправить сообщение в кластер (216081 байт): java.lang.Exception: размер сообщения (216081) превышает максимальный размер пакета (200000). Установите размер фрагментации/пакета в FRAG и TP правильно, причина: null - протоколы.TCP [http-apr-8080-exec-10] [48488852 мс]

после некоторых исследований конфигурации

<config xmlns="urn:org:jgroups"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="urn:org:jgroups http://www.jgroups.org/schema/JGroups-3.1.xsd">
<TCP bind_port="${ehcacheDistributed.jgroups.bindPort}"
     bind_addr="NON_LOOPBACK"
     loopback="false"
     recv_buf_size="${tcp.recv_buf_size:20M}"
     send_buf_size="${tcp.send_buf_size:640K}"
     discard_incompatible_packets="true"
     max_bundle_size="200K"
     max_bundle_timeout="30"
     enable_bundling="true"
     use_send_queues="true"
     sock_conn_timeout="300"

     timer_type="new"
     timer.min_threads="4"
     timer.max_threads="10"
     timer.keep_alive_time="3000"
     timer.queue_max_size="500"

     thread_pool.enabled="true"
     thread_pool.min_threads="1"
     thread_pool.max_threads="10"
     thread_pool.keep_alive_time="5000"
     thread_pool.queue_enabled="false"
     thread_pool.queue_max_size="100"
     thread_pool.rejection_policy="discard"

     oob_thread_pool.enabled="true"
     oob_thread_pool.min_threads="1"
     oob_thread_pool.max_threads="8"
     oob_thread_pool.keep_alive_time="5000"
     oob_thread_pool.queue_enabled="false"
     oob_thread_pool.queue_max_size="100"
     oob_thread_pool.rejection_policy="discard"/>

<TCPPING timeout="3000"
         initial_hosts="${ehcacheDistributed.jgroups.tcpping.initialhosts}"
         port_range="1"
         num_initial_members="10"/>
<MERGE2  min_interval="10000"
         max_interval="30000"/>
<FD_SOCK/>
<FD timeout="35000" max_tries="6" />
<VERIFY_SUSPECT timeout="1500"  />
<BARRIER />
<pbcast.NAKACK2 use_mcast_xmit="false"
               discard_delivered_msgs="true"/>
<UNICAST />
<pbcast.STABLE stability_delay="1000" desired_avg_gossip="50000"
               max_bytes="4M"/>
<pbcast.GMS print_local_addr="true" join_timeout="3000"

            view_bundling="true"/>
<UFC max_credits="2M"
     min_threshold="0.4"/>
<MFC max_credits="2M"
     min_threshold="0.4"/>
<FRAG2 frag_size="60K"  />
<!--RSVP resend_interval="2000" timeout="10000"/-->
<pbcast.STATE_SOCK/>
</config>

мы используем jgroups 3.1.0, может показаться, что jgroups неправильно разбивает сообщение на части с помощью FRAG2, почему это так? что мне не хватает?


person xenoterracide    schedule 18.09.2014    source источник


Ответы (2)


Это не ошибка FRAG2 - где-то внутри JGroups было создано слишком длинное сообщение. См. JGRP-1868.

person Radim Vansa    schedule 19.09.2014

Это ошибка, и ее исправление доступно в Jgroup 3.6.5 https://issues.redhat.com/browse/JGRP-1939?workflowName=GIT+Pull+Request+workflow+&stepId=4

Код ниже удален в версии 3.6.5:

protected void checkLength(long len) throws Exception { if(len > max_bundle_size) throw new Exception("размер сообщения (" + len + ") больше максимального размера пакета (" + max_bundle_size + "). Установите размер фрагментации/пакета в FRAG/FRAG2 и TP правильно"); }

person vikas    schedule 27.05.2020