Date: Mon, 15 Jul 2013 12:53:55 -0700 From: Adrian Chadd <adrian@freebsd.org> To: trafdev <trafdev@mail.ru> Cc: Sepherosa Ziehau <sepherosa@gmail.com>, freebsd-net@freebsd.org Subject: Re: SO_REUSEPORT: strange kernel balancer behaviour Message-ID: <CAJ-VmomHHfhExa4g63tT_sf0hTPa2T7jPKQGHrD0fchq=-k%2B=g@mail.gmail.com> In-Reply-To: <51E44E2F.8060700@mail.ru> References: <51E0E2AF.7090404@mail.ru> <CAMOc5cz6gP2N62T4QhbTdVar94O4FSdPDsqktD_9vJ0mYVqt_Q@mail.gmail.com> <51E44E2F.8060700@mail.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
i've noticed this when doing this stuff in a threaded program with each thread listening on the same port. All threads wake up on each accepted connection, one thread wins and the other threads get EAGAIN. -adrian On 15 July 2013 12:31, trafdev <trafdev@mail.ru> wrote: > Thanks for reply. > > This approach produces lot of "resource temporary unavailable" (eagain) on > accept-ing connections in N-1 processes. > Is this possible to avoid this by e.g. tweaking kqueue? > > > On Sun Jul 14 19:37:59 2013, Sepherosa Ziehau wrote: >> >> On Sat, Jul 13, 2013 at 1:16 PM, trafdev <trafdev@mail.ru> wrote: >>> >>> Hello. >>> >>> Could someone help with following problem of SO_REUSEPORT. >> >> >> The most portable "load balance" between processes listening on the >> same TCP addr/port probably is: >> >> s=socket(); >> bind(s); >> listen(s); >> /* various socketopt and fcntl as you needed */ >> pid=fork(); >> if (pid==0) { >> server_loop(s); >> exit(1); >> } >> server_loop(s); >> exit(1); >> >> Even in Linux or DragonFly SO_REUSEPORT "load balance" between >> processes listening on the same TCP addr/port was introduced recently, >> so you probably won't want to rely on it. >> >> Best Regards, >> sephe >> > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org"
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmomHHfhExa4g63tT_sf0hTPa2T7jPKQGHrD0fchq=-k%2B=g>