communication between worker processes
Leo P.
junk at slact.net
Fri Oct 23 01:28:39 MSD 2009
FYI, and for anyone else encountering this problem, I ended up rolling
my own socketpairs and reusing some of the existing channel handling
functions. One caveat that I did notice:
- The number of worker processes is needed before nginx fork()s. You
can get this in your module's __initialization handler__ from
((ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx,
ngx_core_module))->worker_processes;
In any other module handler it will either be too early or too late to
access this data.
- Leo
Maxim Dounin wrote:
> Hello!
>
> On Mon, Oct 19, 2009 at 05:18:12PM -0400, Leo P. wrote:
>
> [...]
>
> Socket pairs in question are used for nginx's own needs (control
> commands from master to workers). Any attempt to reuse them will
> case nginx malfunction at next control command.
>
> Eventually this will grow into something more generic and modules
> will be able to use this for their own commands. But it's not here
> yet.
>
> Maxim Dounin
>
> p.s. BTW, just to make sure you know: nginx_http_push_module
> relies on shared memory as something unconditionally available for
> all processes, but this isn't really true during binary upgrades.
> New binary creates their own shared memory zones from scratch. As
> a result - module won't survive binary upgrades flawlessly but
> will loose messages instead.
More information about the nginx
mailing list