Many attempts to connect()/disconnect() will eventually fail with EINVAL.
It seems that the number of successful connect()/disconnect() pairs is somewhat
correlated
with the number of allowed open file descriptors for the process, as if some
descriptors are
not closed:
$ python dis.py
RLIMIT_NOFILE: soft=100, hard=200000
4623: Error: Invalid argument
$ cat dis.py
import sys
import socket
import resource
import zmq
def main():
ctx = zmq.Context()
s = ctx.socket(zmq.SUB)
s.setsockopt(zmq.SUBSCRIBE, "")
addr = "tcp://%s:6666" % socket.gethostname()
soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
resource.setrlimit(resource.RLIMIT_NOFILE, (100, hard))
soft, hard = resource.getrlimit(resource.RLIMIT_NOFILE)
print "RLIMIT_NOFILE: soft=%s, hard=%s" % (soft, hard)
for i in xrange(1000000):
try:
s.connect(addr)
s.disconnect(addr)
except Exception as ex:
print >> sys.stderr, "%d: Error: %s" % (i, ex)
return
if __name__ == '__main__':
main()
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev