[zeromq-dev] Forwarder stops forwarding
matt_weinstein at yahoo.com
Wed Jun 16 00:28:07 CEST 2010
Actually, I was slight off - with keep-alives, you only have to send
when the channel quiesces, so you're really just specifying the max
interpacket delay that is allowed before a timeout is declared, and
keep-alives fill in the gap.
On Jun 15, 2010, at 6:12 PM, Matt Weinstein wrote:
> On Jun 15, 2010, at 5:39 PM, Pieter Hintjens wrote:
>> On Tue, Jun 15, 2010 at 3:39 PM, Martin Sustrik <sustrik at 250bpm.com>
>>> What has to be done is implementing heartbeats on 0MQ level.
>>> Btw, a survey: What's the timeout you would be willing to accept to
>>> assert the connection is dead?
>> There was an interesting thread on heartbeating on the HyBi list
>> (discussing this in WebSockets). If done too often it can destroy
>> battery life on a mobile device. So if the same stack is going to do
>> 20ms heartbeats and 30s heartbeats, it probably does need to be a
>> socket option.
>> It might be possible to calculate a sensible (default) heartbeat
>> heuristically by doing a roundtrip ping test but I suspect that's way
>> too complex for our needs.
> How about:
> Use a one-way keep-alive (rather than a round-trip heartbeat) and make
> it adaptive. Each side would just look at their average sends per
> second, and maintain a fraction of that rate. It would be easy to
> measure the rate by sampling a counter.
> E.g. in the case where you had 1,000 messages per second, you might
> ensure 1/100th as many packets were sent (100 keep-alives per second,
> or one inserted every 100ms).
> If you had a 100 message per second channel, this would result in one
> keep-alive every second.
> As keep-alive rates change, a specially crafted OOB message would be
> sent to tell the other side what to expect.
> If the channel ramped up to 100,000 packets per second, you might want
> to limit the heartbeat traffic, so the socket tweaks would be e.g.
> divisor (i.e. number of messages per keepalive) 100 in the above
> example, number of missed keep-alives to down a channel, max/min ms
> spacing, etc... Reasonable defaults could be devised, such as
> divisor=100, max spacing=3000 ms/3 seconds, min spacing= 50ms.
> How does that sound?
>> zeromq-dev mailing list
>> zeromq-dev at lists.zeromq.org
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
More information about the zeromq-dev