I’m stumped. I have a Rails app that seemingly hangs at random times.
I am the only user, but my non-optimized application loads a lot of
objects (around a thousand) for some report views. Sometimes
everything works well. However, if I logout, login, and run the
report again, I can usually get the app to hang. I may need to repeat
this procedure a couple of times before it hangs again.
By hanging, I mean that the development.log file stops scrolling (I
have a terminal window tailing it), and my browser waits
indefinitely. The weirdest part is that when I hit control-c to
interrupt Mongrel, Mongrel announces that it may take up to 60
seconds to shut down, and a few seconds later, a huge number of
queries are executed. It seems like Rails is hanging on something,
and the shutdown command wakes up the thread which starts querying
the database again. It often hangs while trying to query Join Table
Columns, but not exclusively.
My schema has 3 main tables, and 2 intermediate join tables. A habtm
B and B habtm C.
I’ve ruled out any kind of resource contention on my database. For
oracle people, v$lock shows nothing for my sid and v$locked_object is
I thought that maybe adding a pause so ruby could catch up on its
garbage collecting might help, so I added a Kernel.sleep 1 every 100
or so queries. This made it seem like it worked better, but I could
still get it to fail, so I might be imagining any improvement.
I have plenty of free RAM in my machine, and when the Mongrel process
hangs, it uses anywhere from 35-41MB. The amount of CPU usage while
hung is very small.
I am not opening any files on the filesystem.
I am not rotating my log files.
I’m using Rails 1.2.3, os Mac OS X 10.4.9, in development mode,
Mongrel 1.0.1 and Oracle 10.2. I’m using oracle instant client 10.1
I can get the same behavior when I run the app through webrick.
Does anyone have any ideas why Rails hangs intermittently?