[zeromq-dev] Behavior on HWM reached

Diego Fons diego.fons at intraway.com
Mon Jun 23 14:35:14 CEST 2014


I'm facing some problem on a DEALER/ROUTER schema (more than one client
DEALER, one server ROUTER). I'm suspecting that some messages are being
dropped in the DEALER socket. The client apps works with very high load
(cpu and mem).

Reading the FAQ [1] in ZMQ site, I read this:


*How does the HWM (high water mark) work with any socket type?*

It works the following way right now:

The I/O thread reads messages from the pipe and pushes them to the network.
If network is not able to accept more data (e.g. TCP backpressure is
applied) it stops reading messages from the pipe and waits until the
network is ready for accepting more data.

In the application thread, messages are simply pushed to the pipe when
zmq_send() is called. If the pipe is full (HWM is reached) the message is

The problem with the above approach is that when you send a lot of messages
is a quick sequence (e.g. sending small messages in a tight loop) the
messages are stored in the pipe until it is full and the subsequent
messages are simply dropped. The sender is not even notified about the fact
that messages are disappearing.

The main core developer is hopeful that some community members will
volunteer to assist in replacing this mechanism with a rate flow control

So, is this behavior the one implemented in 4.0.4? Because this could be
the reason of my problem.

[1] http://zeromq.org/area:faq

Diego Andrés Fons
Intraway Corp.
Solution Developer
AR Office: +54 (11) 6040 4000
US Office: +1 (516) 620 3890
Email: diego.fons at intraway.com

Visit our website at http://www.intraway.com
Proud to be an ISO 9001:2008 certified company
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20140623/5cb1a1fd/attachment.htm>

More information about the zeromq-dev mailing list