[zeromq-dev] Can I prevent zeromq from occupying file descriptors?
Alexander Poddey
alexander.poddey at gmx.net
Tue Jul 19 19:42:53 CEST 2016
Ok,
as far as I understood, the user can only increase up to the hard limit,
which is ~4k in my case (while the kernel limit is ~700k). Fo reverything
above, one needs root privileges...
Tony Willoughby wrote:
> Use a bash script that calls "ulimit -n X" before starting your daemon.
> Where X is the number of concurrent open file descriptors you need. Linux
> can support thousands per process.
>
> See the bash man page for ulimit documentation.
>
> On Tue, Jul 19, 2016 at 12:12 PM, Alexander Poddey
> <alexander.poddey at gmx.net
>> wrote:
>
>> Hmm,
>>
>> on linux, the number of file descriptors per process is limited
>> (typically to 1024). The total limit on my machine (kernel limit is ~734
>> 000 opened files).
>>
>> This means a process can accept only 1024 connections?!?
>>
>> I can tweak the limit as super user of that machine; this however is no
>> good
>> solution.
>> Think of my agent simulation running on a server where I'm not root. Then
>> each process can accept only 1024 connections which is way to few...
>>
>> I wonder why zmq needs a file descriptor per connection...
>>
>> Alexander
>>
>>
>>
>> Doron Somech wrote:
>>
>> > I'm not sure I understand, each file descriptor is a socket. When
>> > zeromq accept tcp socket another file descriptor is created. OS should
>> > be able to manage thousands and tens of thousand open descriptor.
>> >
>> > On Jul 19, 2016 6:56 PM, "Alexander Poddey" <alexander.poddey at gmx.net>
>> > wrote:
>> >
>> >>
>> >> Essentially, the question is:
>> >> why does ZMQ consume file descriptors at all?
>> >>
>> >>
>> >>
>> >>
>> >> > Hi,
>> >> >
>> >> > I have a setup in C++ on linux where a master process is setting up
>> >> > a ZMQ_ROUTER and then forks many child processes, which then connect
>> >> > to
>> >> that
>> >> > router (tcp protocol).
>> >> > Whenever a child zmq_connect's to the master, a file descriptor is
>> >> > occupied (and assigned to the master process). They get free'ed fine
>> >> > when the connection is close.
>> >> >
>> >> > This however limits the number of interacting processes to the
>> >> > number of allowed file descriptors (per process). For me (linux),
>> >> > this currently is 1024, which is way to small for my intended use
>> >> > (multi-agent / swarm simulation).
>> >> >
>> >> > Can I prevent this behaviour?
>> >> > In my mesaging architecture, each agent connects to 6 sockets, so
>> >> > with
>> >> 100
>> >> > agents I end up with 600 occupied file descriptors :-(
>> >> >
>> >> > Alexander
>> >> >
>> >> >
>> >> > _______________________________________________
>> >> > zeromq-dev mailing list
>> >> > zeromq-dev at lists.zeromq.org
>> >> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >>
>> >>
>> >> _______________________________________________
>> >> zeromq-dev mailing list
>> >> zeromq-dev at lists.zeromq.org
>> >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>
>>
>> _______________________________________________
>> zeromq-dev mailing list
>> zeromq-dev at lists.zeromq.org
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>>
>
>
>
More information about the zeromq-dev
mailing list