Re: [jgroups-users] Can probe be used to recover network splits?

Questions/problems related to using JGroups <[email protected]>
Newsgroups gmane.comp.java.javagroups.general
Message-ID <CAO6ZtNfQwS7WOornG3rLC1=dUVK=suzC20H1QO9FyuLaY0L9CA@mail.gmail.com>
> Looks like another discussion is also going on in the same thread.

Requesting to keep the thread different so each post can be helpful to
other readers too.

I got lost in my own thread for a while ;-).


>>
>>     I'm sure there's something else going on, preventing a merge. Have you
>>> >     >     checked your thread pools? Do they have queues enabled
>>> perhaps? Do you
>>> >     >     configure the internal and/or timer pools as well?
>>> >     >
>>> >     > Thread pool queue is enabled  for Regular thread pools but
>>> disabled for
>>> >     > OOB.
>>> >     > I have internal and timer threads configured too.
>>> >
>>> >
>>> [Bela] OK. An idea is to check with probe.sh (next time this occurs)
>>>      what the size of the pools is (plus the active sizes)
>>> [PoojaK] : the internal_queue_size and time_queue_size is all 0
>>>
>>> [Bela] I meant pool size not queue size.
>>>
>>> *[PoojaK]: Oh OK. Sorry for the confusion,but the configuration for
>> OOB_threadPool=true that *
>>
> *I gave you was overwritten to false on the system when the issue
>> happened. *
>>
> *So in this case, OOB thread pool and Regular both were enabled. *
>>
> *oob_thread_pool.queue_max_size is configured to be 1000.*
>>
> *oob_queue_size became 1000 for some nodes that were stuck and *
>>
> *their respective oob_pool_size were 100.*
>>
> *regular_pool_size was somewhere between 10 and 18.*
>>
> *So I think this is playing a major role here. *
>>
>
>>
>>>
>>> >     everywhere but the OOB_queue_size: most of the nodes reported queue
>>> >     size to be around 1000 and oob.thread_pool.queue_max_size is 1000.
>>>
>>> [Bela] The OOB queue size is ignored as the queue is disabled, but the
>>> regular queue size should be always more or less 0!
>>>
>>> >     Does views() go through OOB channel?
>>>
>>> [Bela] No, a new view is sent as regular message. So, if your regular
>>> queue size is > 0, then that could mean views are delayed.
>>>
>>> > I think I should disable the  queue on OOB thread pool for sure. so
>>> that messages reach right away.
>>>
>>> [Bela] I thought you're doing that already. But I'd agree that the
>>> regular pool's queue could be disabled, too.
>>>
>>>
>>> >     >     What's you config?
>>> >     >
>>> >     >
>>> >     > Below is my config:
>>> >     >
>>> >      >         <TCP
>>> >     >         thread_pool.enabled="true"
>>> >     >         thread_pool.min_threads="50"
>>> >     >         thread_pool.max_threads="100"
>>> >     >         thread_pool.keep_alive_time="5000"
>>> >     >         thread_pool.queue_enabled="true"
>>> >     >         thread_pool.queue_max_size="50000"
>>> >     >         thread_pool.rejection_policy="Discard"
>>> >
>>> >     [Bela]
>>> >     So if you have more than 50 threads active at the same time, new
>>> >     messages will be queued up to 50000. Is 50 the max number of nodes
>>> that
>>> >     are sending?
>>> >     An idea might be to disable the queue and up max_size to a large
>>> number.
>>> >     OTOH, you won't need more than (max_nodes + B) threads where B is a
>>> >     small buffer (say 3) as messages from the same sender S will
>>> simply get
>>> >     added to S's table is a thread is already processing a message (or
>>> >     batch) from S.
>>> >
>>> > /[PoojaK]: 50 was kept as higher limit since this system was going to
>>> > increase to 50 but currently its 32 members. But when I was checking
>>> > this system again I noticed min_threads are only 10 in current system
>>> > where issue happen whereas we have 32 nodes. This might be the main
>>> > culprit :(. That must be manual error (and I will get this corrected
>>> > right away to 35+). /
>>>
>>>
>>> [Bela] Yes, unless you have 50'000 messages in the queue, you'll never
>>> have more than 10 threads processing messages from 32 nodes. So, in the
>>> worst case, messages (and views) get delayed a lot.
>>>
>>>
>>> > /Also, most nodes are running with rejection_policy as Run for OOB and
>>> > regular thread pools. This might be another culprit. I need to get this
>>> > changed to "Discard" or "Run"/
>>>
>>>
>>> [Bela] Yes, +1,  definitely don't use "run"!
>>>
>>>
>>> > /For the queues, do you suggest disabling OOB , regular , timer and
>>> > internal thread pool queues? or just regular and OOB?/
>>>
>>> [Bela] Just regular and OOB. The other thread pools have tasks that are
>>> never supposed to block.
>>>
>>>
>>>
>>> >     >         initial_hosts=""
>>> >
>>> >     [Bela] I assume you're setting this value at startup time?
>>> >     /[PoojaK]: Yes and we have been very accurate with this to not see
>>> >     "No Physical Address found" :-)/
>>> >
>>> >     >         <MERGE3
>>> >     >         max_interval="200000"
>>> >     >         max_participants_in_merge="200"
>>> >     >         min_interval="20000" />
>>> >
>>> >     [Bela] So on average it will take 200000 * 1.6 (check_interval,
>>> >     computed) to start a merge
>>> >
>>> > /[PoojaK]: I checked the check_interval is 320 seconds for us right
>>> > now.Do you think this is adding to delay in merging? /
>>>
>>> [Bela] Not necessarily, but if you only check every ~5 minutes, then you
>>> can have 12 merges per hour _max_. Since merge detection is done with
>>> unreliable messages (not retransmitted since they're below NAKACK2 /
>>> UNICAST3), a merge might not happen at all, or happen partially (not
>>> merging the entire cluster).
>>>
>>> I don't think this is the main culprit, but it doesn't help having to
>>> wait for 5+ minutes for merge detection.
>>>
>>>
>>> >     >         <FD_ALL
>>> >     >         timeout="600000"
>>> >     >         interval="60000" />
>>> >
>>> >
>>> >     [Bela] 10 minutes to detect a hung or crashed member?
>>> >
>>> > /[PoojaK]: that was done keeping in mind the nature of Application.
>>> This
>>> > application is data intensive and needs to store and re-transmit data
>>> if
>>> > the outage is within 10 minutes. I do remember from your workshop that
>>> > this shouldnt be very high. I will keep this point in mind for a
>>> change. /
>>>
>>>
>>> [Bela] Yes, but I also suggested to pair FD_ALL with FD_SOCK. The latter
>>> would catch 90% of all crashes.
>>>
>>>
>>> >     >         <pbcast.GMS
>>> >     >
>>> >     >         print_local_addr="true"
>>> >     >
>>> >     >         join_timeout="6000"
>>> >     >
>>> >     >         view_bundling="true"
>>> >     >
>>> >     >         merge_timeout="60000"
>>> >     >
>>> >     >         view_ack_collection_timeout="10000" />
>>> >
>>> >     [Bela] Not a good idea; it might take up to 10s to install a view
>>> unless
>>> >     VIEW-ACKs from all members are received quickly
>>> >
>>> > /[PoojaK]: If I recollect this variable is not stopping anything. Its
>>> > asynchronous right? /
>>>
>>>
>>> [Bela] Nope. The view installer (coordinator) waits for 10s until it has
>>> acks from all members of the new view. So this will delay view
>>> installation (also merge views).
>>>
>>>
>>> >     >         <FRAG2
>>> >     >         frag_size="60000" />
>>> >
>>> >     [Bela] Oh the horror, why aren't you using FRAG2?
>>> >
>>> > /[PoojaK]: I think I am using FRAG2 only. did you mean something else?
>>> /
>>>
>>>
>>> [Bela] Sorry, my bad, I thought I read FRAG... :-)
>>>
>>>
>>> >      >         <pbcast.STATE_TRANSFER/>
>>> >      >
>>> >      >         </config>
>>> >      >
>>> >      >     > This is a cluster of 30 Nodes running with TCP as
>>> transport.
>>> >      >     > The nodes are geographically co-located across the globe.
>>> >      >     >
>>> >      >     >
>>> >      >     > On Thu, Mar 17, 2016 at 4:27 AM, JGroups - General mailing
>>> >     list [via
>>> >      >      > JGroups] <[hidden email]
>>> >      >     </user/SendEmail.jtp?type=node&node=10995&i=0>>
>>> >      >      > wrote:
>>> >      >      >
>>> >      >      >     Hi Pooja,
>>> >      >      >
>>> >      >      >     On 16/03/16 21:25, Questions/problems related to
>>> using
>>> >      >     JGroups wrote:
>>> >      >      >     > Hi ,
>>> >      >      >     >
>>> >      >      >     > Say if there is a split in the cluster and it is
>>> not
>>> >     recovering
>>> >      >      >     > automatically inspite of no network issues, has
>>> any one
>>> >      >     tried any probe
>>> >      >      >     > commands related to merge3 to heal the cluster
>>> >     automatically?
>>> >      >      >
>>> >      >      >     There's a @ManagedOperation MERGE3.sendInfo() that
>>> can be
>>> >      >     triggered, so
>>> >      >      >     everyone in a cluster sends their information,
>>> >     allowing the
>>> >      >     coordinator
>>> >      >      >     to start a merge.
>>> >      >      >
>>> >      >      >     However, this doesn't automatically merge the
>>> cluster,
>>> >     e.g.
>>> >      >     if everyone
>>> >      >      >     has the same view, then nothing will happen.
>>> >      >      >
>>> >      >      >     If there is no network problem, and MERGE3 does *not*
>>> >     recover the
>>> >      >      >     cluster, then that would be a bug. In such a case,
>>> >     what would be
>>> >      >      >     required for diagnosis is:
>>> >      >      >     - TRACE logs for all members of GMS and MERGE3
>>> >      >      >     - Views of all members. This could be used for a
>>> >     reproducer
>>> >      >      >
>>> >      >      >     I haven't yet come across a scenario with MERGE3
>>> (*not*
>>> >      >     MERGE2!) that
>>> >      >      >     doesn't heal a network partition when the network is
>>> >      >     functioning ok
>>> >      >      >     again.
>>> >      >      >
>>> >      >      >      > Thanks
>>> >      >      >      > Pooja
>>> >      >      >      >
>>> >      >      >      >
>>> >      >      >
>>> >      >
>>> >
>>> >     --
>>> >     Bela Ban, JGroups lead (http://www.jgroups.org)
>>> >
>>> >
>>> >
>>> > javagroups-users mailing list
>>> > [email protected]
>>> > https://lists.sourceforge.net/lists/listinfo/javagroups-users
>>> >
>>>
>>> --
>>> Bela Ban, JGroups lead (http://www.jgroups.org)
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Transform Data into Opportunity.
>>> Accelerate data analysis in your applications with
>>> Intel Data Analytics Acceleration Library.
>>> Click to learn more.
>>> http://pubads.g.doubleclick.net/gampad/clk?id=278785231&iu=/4140
>>> _______________________________________________
>>> javagroups-users mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/javagroups-users
>>>
>>
>>
>

------------------------------------------------------------------------------
Transform Data into Opportunity.
Accelerate data analysis in your applications with
Intel Data Analytics Acceleration Library.
Click to learn more.
http://pubads.g.doubleclick.net/gampad/clk?id=278785351&iu=/4140

_______________________________________________
javagroups-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/javagroups-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.