On Fri, Jul 8, 2011 at 3:13 PM, Tom Evans <[email protected]> wrote:
> On Fri, Jul 8, 2011 at 3:04 PM, Cal Leeming [Simplicity Media Ltd]
> <[email protected]> wrote:
>> Although I'm sure both methods would work, would you recommend any
>> particular preference? (as my preference is merely on the fact that
>> having a wrapper seems a lot cleaner).
>>
>> I guess the custom binary I was trying to think of earlier used the
>> setrlimit/fork method mentioned above.
>
> There is only one way to modify limits, and that is setrlimit, which
> is how ulimit is implemented. Given ulimit and setrlimit are both in
> POSIX, I don't see why anyone would write their own wrapper to do
> this.
My worries were that in the event of children processes spawning some
a single parent, both executing ulimit, there could potentially be a
race condition.
For example:
shell
> supervisord (forks, and shell exits)
> calls nginx-wrapper
> calls ulimit
> calls nginx
> calls other-wrapper
> calls ulimit
> calls other
In the above scenario, ulimit would apply that limit to everything
within that forked supervisord instance, correct?
Therefore, if nginx-wrapper calls ulimit at almost the exact same
point as other-wrapper, there could be a race condition between the
time it takes to jump from ulimit to the binary, where the wrong
address space is inherited.
Or have I understood that wrong??
>
> The way I typically add limits is to edit the rc (startup) script, and
> add a call to ulimit there. This applies the limit to the process
> which launches the daemon, its a simple clean one liner, and doesn't
> require massaging command line arguments into a sh -c '' line (or
> bash).
>
> Cheers
>
> Tom
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.