[Mongrel] Problems with mongrel dying

Ezra Zygmuntowicz ezmobius at gmail.com
Fri Nov 3 13:03:37 EST 2006


On Nov 3, 2006, at 8:50 AM, Kirk Haines wrote:

> On 11/2/06, Zed A. Shaw <zedshaw at zedshaw.com> wrote:
>
>> That's probably the best you can do until you can find out why  
>> it's leaking.  My past
>> experience has been to never trust Ruby's GC or any external C  
>> extensions you may be
>> using.  I've combed through Mongrel to insane levels to root out  
>> all possible leaks I can.
>> Yet, the Sync vs. Mutex bug and recent Array patch from Eric M.  
>> shows that Ruby's GC has
>> a long way to go.
>
> I'll 1/2 second Zed's comments here.  I've spent a lot of time poking
> around in Ruby internals looking at memory usage.  It is very easy for
> someone to write a C extension that mismanages memory and causes Ruby
> to leak, so always look suspiciously at an extension if you have a
> leak that you can't find another cause for, unless you know with great
> confidence that the extension is solid.
>
> The Ruby GC itself is pretty simple and does what it is supposed to.
> It will tend to have performance issues as the set of objects in RAM
> increases, though there are strategies a person can sometimes use to
> manage that, if needed.
>
> The Sync vs Mutex thing, though, can not be laid at the foot of the
> Ruby GC.  The problem is with Array.c not releasing it's data in a way
> that allows the Ruby GC to handle it.   Refer back to the beginning of
> this email about how easy it is to screw up memory management in C
> extensions....
>
> Now, that said, if you are using arrays and are using push and shift
> operations to manage an array like a queue (or any libraries, like
> Mutex, that you are using do this), that _will_ bite you in the ass
> with memory usage, because of this Array bug.
>
> Mutex has much better performance than Sync, though, especially if
> there are more than a very small number of threads, so in this
> specific case I continue to use a Mutex, but have patched around the
> problemlematic Array usage by creating my own copy of the Mutex class
> that uses Array in a way that doesn't suffer from the bug.
>
>
> Kirk Haines

Hey Kirk-

	Would you mind sharing your patched mutex.rb file? I woudl  
appreciate it.

Thanks-
-- Ezra Zygmuntowicz 
-- Lead Rails Evangelist
-- ez at engineyard.com
-- Engine Yard, Serious Rails Hosting
-- (866) 518-YARD (9273)




More information about the Mongrel-users mailing list