【问题标题】:Rails, Nginx and PostgreSQL - 502 Gateway ErrorsRails、Nginx 和 PostgreSQL - 502 网关错误
【发布时间】:2011-11-25 03:03:05
【问题描述】:

我在 Linode 上运行 Ubuntu 11.04,我正在尝试设置和运行 Rails 3.1、Nginx 1.0.6、Passenger 3.0.9 和 PostgreSQL 8.4。我已经成功部署了我的应用程序,一切看起来都运行良好,但是在几次成功的 HTTP 请求之后,服务器开始返回 502 网关错误。

我查看了 Nginx 日志,这似乎是一个 PostgreSQL 问题,我在我的 OS X 开发机器(PostgreSQL 8.4、Rails 3.1 和 WEBrick)上使用了相同的设置,它运行良好。

有谁知道问题出在哪里?


2011/09/26 11:43:41 [error] 19694#0: *152 upstream prematurely closed connection while reading response header from upstream, client: <REDACTED>, server: localhost, request: "GET /news/new HTTP/1.0", upstream: "passenger:unix:/passenger_helper_server:", host: "<REDACTED>"
[ pid=19978 thr=-609427238 file=utils.rb:176 time=2011-09-26 11:43:41.504 ]: *** Exception PGError in application (server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.**
) (process 19978, thread #<Thread:0xb759c1b4>):
        from /var/lib/gems/1.8/gems/activerecord-3.1.0/lib/active_record/connection_adapters/postgresql_adapter.rb:276:in `query'
        from /var/lib/gems/1.8/gems/activerecord-3.1.0/lib/active_record/connection_adapters/postgresql_adapter.rb:276:in `clear_cache!'
        from /var/lib/gems/1.8/gems/activerecord-3.1.0/lib/active_record/connection_adapters/postgresql_adapter.rb:275:in `each_value'
        from /var/lib/gems/1.8/gems/activerecord-3.1.0/lib/active_record/connection_adapters/postgresql_adapter.rb:275:in `clear_cache!'
        from /var/lib/gems/1.8/gems/activerecord-3.1.0/lib/active_record/connection_adapters/postgresql_adapter.rb:303:in `disconnect!'
        from /var/lib/gems/1.8/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:202:in `disconnect_without_synchronization!'
        from /var/lib/gems/1.8/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:201:in `each'
        from /var/lib/gems/1.8/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:201:in `disconnect_without_synchronization!'
        from /var/lib/gems/1.8/gems/activesupport-3.1.0/lib/active_support/core_ext/module/synchronization.rb:35:in `disconnect!'
        from /usr/lib/ruby/1.8/monitor.rb:242:in `synchronize'
        from /var/lib/gems/1.8/gems/activesupport-3.1.0/lib/active_support/core_ext/module/synchronization.rb:34:in `disconnect!'
        from /var/lib/gems/1.8/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:395:in `clear_all_connections!'
        from /var/lib/gems/1.8/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:395:in `each_value'
        from /var/lib/gems/1.8/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_pool.rb:395:in `clear_all_connections!'
        from /var/lib/gems/1.8/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:123:in `__send__'
        from /var/lib/gems/1.8/gems/activerecord-3.1.0/lib/active_record/connection_adapters/abstract/connection_specification.rb:123:in `clear_all_connections!'
        from /opt/passenger-3.0.9/lib/phusion_passenger/utils.rb:398:in `before_handling_requests'
        from /opt/passenger-3.0.9/lib/phusion_passenger/rack/application_spawner.rb:204:in `start_request_handler'
        from /opt/passenger-3.0.9/lib/phusion_passenger/rack/application_spawner.rb:170:in `send'
        from /opt/passenger-3.0.9/lib/phusion_passenger/rack/application_spawner.rb:170:in `handle_spawn_application'
        from /opt/passenger-3.0.9/lib/phusion_passenger/utils.rb:479:in `safe_fork'
        from /opt/passenger-3.0.9/lib/phusion_passenger/rack/application_spawner.rb:165:in `handle_spawn_application'
        from /opt/passenger-3.0.9/lib/phusion_passenger/abstract_server.rb:357:in `__send__'
        from /opt/passenger-3.0.9/lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
        from /opt/passenger-3.0.9/lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
        from /opt/passenger-3.0.9/lib/phusion_passenger/abstract_server.rb:180:in `start'
        from /opt/passenger-3.0.9/lib/phusion_passenger/rack/application_spawner.rb:128:in `start'
        from /opt/passenger-3.0.9/lib/phusion_passenger/spawn_manager.rb:253:in `spawn_rack_application'
        from /opt/passenger-3.0.9/lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add'
        from /opt/passenger-3.0.9/lib/phusion_passenger/spawn_manager.rb:246:in `spawn_rack_application'
        from /opt/passenger-3.0.9/lib/phusion_passenger/abstract_server_collection.rb:82:in `synchronize'
        from /opt/passenger-3.0.9/lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
        from /opt/passenger-3.0.9/lib/phusion_passenger/spawn_manager.rb:244:in `spawn_rack_application'
        from /opt/passenger-3.0.9/lib/phusion_passenger/spawn_manager.rb:137:in `spawn_application'
        from /opt/passenger-3.0.9/lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
        from /opt/passenger-3.0.9/lib/phusion_passenger/abstract_server.rb:357:in `__send__'
        from /opt/passenger-3.0.9/lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
        from /opt/passenger-3.0.9/lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
        from /opt/passenger-3.0.9/helper-scripts/passenger-spawn-server:99

----------

谢谢!

【问题讨论】:

  • 我似乎已经通过更改 config/environments/production.rb 中的 config.action_controller.perform_caching = false 解决了这个问题,但我仍然无法弄清楚为什么缓存会导致 Postgres 错误,但事实并非如此在生产模式下关闭缓存确实是一个可行的选择。

标签: ruby-on-rails postgresql nginx passenger


【解决方案1】:

在这种情况下,什么写入日志 PostgreSQL?关闭连接肯定有一些原因 - 也许是旧版本的 PostgreSQL?

【讨论】:

  • 我检查了日志,我能看到的唯一错误是:2011-09-25 16:43:50 BST LOG:不完整的启动数据包 2011-09-25 18:31:53 BST日志:客户端连接上的意外 EOF 2011-09-26 11:39:10 BST 日志:客户端连接上的意外 EOF 2011-09-26 11:39:26 BST 日志:客户端连接上的意外 EOF 2011-09-26 13: 00:42 BST LOG:不完整的启动数据包。我不完全确定为什么数据库客户端例如Rails 在这种情况下不会发送完整的数据流,这可能与 Nginx 的超时设置有关吗?
  • 很抱歉回答得太晚了...您拥有哪个版本的 Postgresql 以及哪个版本的 Postgresql 客户端库?
猜你喜欢
  • 2015-05-21
  • 2015-04-22
  • 2020-10-17
  • 2011-09-09
  • 2018-07-02
  • 2016-09-21
  • 2014-01-30
  • 2011-05-14
  • 2019-06-05
相关资源
最近更新 更多