【问题标题】:Rails / Passenger: The backend application did not send a valid HTTP responseRails / Passenger:后端应用程序未发送有效的 HTTP 响应
【发布时间】:2012-04-03 11:57:03
【问题描述】:

今天早上我的 Rails 应用程序崩溃了,因为我的磁盘空间已满,mysql db 无法再写入 tmp 文件。我通过将 mysql 指向具有更多空间的分区上的 tmpdir 来解决此问题,重新启动 mysql,重新启动 Apache,我的所有其他应用程序再次运行愉快。但不是我的 Rails 应用程序。

我使用 Apache、Passenger 和 Capistrano 部署它。现在,在我修复了 mysql/space 问题后,应用程序再次出现,但是每当我向服务器发送 POST 请求时,它就会返回 500 Internal Server Error。我检查了 Apache error_log,这就是它所说的:

[Tue Apr 03 12:19:41 2012] [error] [client 130.xx.x.xxx] Premature end of script headers: logout, referer: http://myrailsapp.com/customers
[ pid=8942 thr=47916460421888 file=ext/apache2/Hooks.cpp:817 time=2012-04-03 12:19:41.52 ]: The backend application (process 9139) did not send a valid HTTP response; instead, it sent nothing at all. It is possible that it has crashe
d; please check whether there are crashing bugs in this application.
[ pid=9139 thr=231420160 file=utils.rb:176 time=2012-04-03 12:19:41.053 ]: *** Exception Errno::ENOENT in application (No such file or directory - /tmp/RackRewindableInput20120403-9139-60boph.lock) (process 9139, thread #<Thread:0x00
00001b966200>):
    from /usr/local/lib/ruby/1.9.1/tempfile.rb:342:in `rmdir'
    from /usr/local/lib/ruby/1.9.1/tempfile.rb:342:in `rmdir'
    from /usr/local/lib/ruby/1.9.1/tempfile.rb:334:in `ensure in locking'
    from /usr/local/lib/ruby/1.9.1/tempfile.rb:334:in `locking'
    from /usr/local/lib/ruby/1.9.1/tempfile.rb:144:in `block in initialize'
    from /usr/local/lib/ruby/1.9.1/tmpdir.rb:133:in `create'
    from /usr/local/lib/ruby/1.9.1/tempfile.rb:134:in `initialize'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/utils/rewindable_input.rb:86:in `new'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/utils/rewindable_input.rb:86:in `make_rewindable'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/utils/rewindable_input.rb:30:in `read'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.3.6/lib/rack/request.rb:183:in `POST'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.3.6/lib/rack/methodoverride.rb:15:in `call'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.3.6/lib/rack/runtime.rb:17:in `call'
    from /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.1.3/lib/active_support/cache/strategy/local_cache.rb:72:in `call'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-1.3.6/lib/rack/lock.rb:15:in `call'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-cache-1.1/lib/rack/cache/context.rb:132:in `forward'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-cache-1.1/lib/rack/cache/context.rb:139:in `pass'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-cache-1.1/lib/rack/cache/context.rb:151:in `invalidate'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-cache-1.1/lib/rack/cache/context.rb:70:in `call!'
    from /usr/local/lib/ruby/gems/1.9.1/gems/rack-cache-1.1/lib/rack/cache/context.rb:50:in `call'
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.1.3/lib/rails/engine.rb:456:in `call'
    from /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.1.3/lib/rails/railtie/configurable.rb:30:in `method_missing'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/abstract_request_handler.rb:513:in `accept_and_process_next_request'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/rack/application_spawner.rb:206:in `start_request_handler'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/rack/application_spawner.rb:171:in `block in handle_spawn_application'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/utils.rb:479:in `safe_fork'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/rack/application_spawner.rb:166:in `handle_spawn_application'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/abstract_server.rb:180:in `start'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/rack/application_spawner.rb:129:in `start'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/spawn_manager.rb:253:in `block (2 levels) in spawn_rack_application'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/spawn_manager.rb:246:in `block in spawn_rack_application'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/abstract_server_collection.rb:82:in `block in synchronize'
    from <internal:prelude>:10:in `synchronize'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/spawn_manager.rb:244:in `spawn_rack_application'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/spawn_manager.rb:137:in `spawn_application'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/helper-scripts/passenger-spawn-server:99:in `<main>'

    [root@ngrl logs]# 
    [root@ngrl logs]# tail /etc/httpd/logs/error_log
    from <internal:prelude>:10:in `synchronize'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/spawn_manager.rb:244:in `spawn_rack_application'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/spawn_manager.rb:137:in `spawn_application'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
    from /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.11/helper-scripts/passenger-spawn-server:99:in `<main>'

这是我尝试过的: 我重新启动了 Apache 几次,并通过将 restart.txt 文件放在 tmp 下重新启动了 rails 应用程序。我也用 cap deploy 重新部署了它,但似乎没有任何效果。使用 Webrick 部署的开发版本没有这个问题,它具有与生产版本完全相同的代码和数据库。一定是乘客问题。 GET 请求可以正常工作,但不能 POST 或 PUT。

有什么想法吗?

【问题讨论】:

    标签: ruby-on-rails passenger capistrano


    【解决方案1】:

    我想您可能还有其他空间问题。您是否确保您的 rails 应用程序仍有空间用于 log 和 tmp 目录?

    【讨论】:

    • 是的,没关系。我清理了一些空间,所有其他应用程序都运行良好。甚至这个处于开发模式。这一定是乘客的事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    相关资源
    最近更新 更多