Closed nguyenxuantuong closed 8 years ago
go zmq Socket.SetSndBuf()/Socket.SetRcvBuf() just calls the OS's underlying setsockopt(SO_SNDBUF | SO_RCVBUF, x) system call.
Every OS has different SO_SNDBUF limits and reacts differently when limits are exceeded. Linux will silently accept a too high value; and lower it for you. OSX/FreeBSD fails fast.
OSX's upper limit is related to kern.ipc.maxsockbuf. I am running El Capitan (10.11.3, latest) Here is what I see:
# sysctl kern.ipc.maxsockbuf
kern.ipc.maxsockbuf: 6291456
#
This may help for OSX: http://slaptijack.com/system-administration/mac-os-x-tcp-performance-tuning/
So, this isn't an issue with zmq4?
Hi,
I have zeromq: stable 4.1.4 installed using brew on MacOSX and have written a simple PUB/SUB program to test zeromq. But when I run the sample program using flags --bufsize > 5 (to use a buffer of size > 5MB) (go run go_zmq_pubsub.go --bufsize=6); it throws the following exception:
No buffer space available (tcp.cpp:69) SIGABRT: abort PC=0x7fff9911c286 m=0 signal arrived during cgo execution
Do you have any suggestion why it happened? Thanks.
Below is the program I used to test the zeromq4.x
PS: I just tried and the above code works fine on Centos7 with lib-zeromq built from source.