zeromq里面关这个对垒长度限制叫做 “High Water Marks”,2.0版本默认是没有限制的,3.0里面这个长度默认为1000。这个比较容易达到啊,根据包大小和消耗的内存大概修改一下才行。 zeromq的api也提供了修改系统的tcp缓存大小的接口了。
详细的socket选项,参考 http://api.zeromq.org/3-2:zmq-setsockopt
ZMQ_SNDHWM: Set high water mark for outbound messages
ZMQ_RCVHWM: Set high water mark for inbound messages
设置发送队列的长度
socket
=
new
zmq
::
socket_t
(*
context
,
ZMQ_PUSH
);
int
queue_length
=
5000
;
socket
->
setsockopt
(
ZMQ_SNDHWM
,
&
queue_length
,
sizeof
(
queue_length
));
socket
->
connect
(
"tcp://127.0.0.1:5555"
);
其他有意思的选项:
ZMQ_AFFINITY: Set I/O thread affinity IO线程的亲和性
ZMQ_SNDBUF: Set kernel transmit buffer size 设置内核的发送缓冲长度。
ZMQ_RCVBUF: Set kernel receive buffer size 设置内核的接受缓冲长度。
应该就是系统的那个tcp缓存大小
ZMQ_RECONNECT_IVL: Set reconnection interval 重连间隔
ZMQ_RECONNECT_IVL_MAX: Set maximum reconnection interval
ZMQ_BACKLOG: Set maximum length of the queue of outstanding connections tcp相关的设置