Finally, I use a work-around solution before anybody can tell me a better
answer.
I modified ruby/gems/1.8/gems/rails-0.14.3/lib/fcgi_handler.rb as below.
def exit_now_handler(signal)
dispatcher_log :info, "asked to terminate immediately"
## force to restart
dispatcher_log :info, "but we will restart"
restart_handler(signal)
#exit
end
For signal TERM, I force dispatch.fcgi not to exit but restart. It looks
weird but at least works for me. User will not see 500 error anymore, and
will only need to wait a while to restart dispatch.fcgi if something goes
wrong.
Gary
On 12/5/05, Gary Lin <garychlin-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:>
> Hi,
>
> I know this topic has been discussed before, but I tried every solutions
> still cannot solve it.
>
> The thing is, I run my rails app in dreamhost, with FastCGI. (
> rails-0.14.3 + ruby-fcgi-0.8.6 + fcgi-2.4.0)
> I can start my app, but I keep hitting 500 error randomly. That is, for
> the same page, I will get 500 sometimes, but ok after reload.
>
> This is what I got from fastcgi.crash.log
>
> [..] asked to terminate immediately
> [..] terminated by explicit exit exit
>
> And in apache log
>
> ... FastCGI: incomplete headers (0 bytes) received from server
> "/home/..../public/dispatch.fcgi"
>
> I search all the forum on the web, and these are what I have done.
>
> 1) change public/.htaccess to RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
> 2) chmod 755 for dispatch.fcgi, and log directory
> 3) check the ruby path (#!/path/local/bin/ruby) in dispatch.fcgi
> 4) make sure dispatch.fcgi is not dos format (run dos2unix)
>
> But it still doesn''t work after I have done all of these.
>
> Then I tried these
>
> 5)
>
http://convergentarts.com/articles/2005/08/16/new-fcgi_handler-rb-cuts-500-errors-or-so
> copy the lastest
fcgi_handler.rb<http://dev.rubyonrails.org/svn/rails/trunk/railties/lib/fcgi_handler.rb>to
lib
> but actually it''s unnecessary because that file is exactly the
same as
> I have in rails 0.14-3
> - still doesn''t work
>
> 6) http://forum.textdrive.com/viewtopic.php?id=2972
> according to this, fcgi has some problem from gem, so I uninstall fcgi
> gem, and make ruby-fcgi-0.8.6
> from source.
> - the 500 error times reduce, but will still hit it.
>
> 7) downgrade rails to 0.13.1, no help
>
> 8) try to run dispatch.fcgi manually
> # ruby dispatch.fcgi
> I got : Status: 500 Internal Server Error
> Is that normal ? Can you run dispatch.fcgi manually?
>
> That really drives me crazy.
> I don''t know what else I can try, please give me advise if you
think of
> any.
> Thanks!
>
> Gary
>
>
_______________________________________________
Rails mailing list
Rails-1W37MKcQCpIf0INCOvqR/iCwEArCW2h5@public.gmane.org
http://lists.rubyonrails.org/mailman/listinfo/rails