2011-01-12 50 views
1

我的申請後後閒置一夜,當我試圖訪問它在早上我得到一個500內部服務器錯誤和日誌指示「PGError:到服務器的連接」 。在第一次請求後,如果我再次刷新頁面,一切都很好。「PGError:沒有連接到服務器的」空閒

我運行Ubuntu 10.04與Apache 2,客運3.0.2,2.3.8的Rails,並在遠程服務器上的Postgres 8.4。

任何想法如何解決這個問題?

這裏是日誌:

Processing ApplicationController#index (for 192.168.1.33 at 2011-01-06 17:28:14) [GET] 
    Parameters: {"action"=>"index", "controller"=>"da"} 
ActiveRecord::StatementInvalid (PGError: no connection to the server 
: SELECT * FROM "users" WHERE ("users"."id" = 1) LIMIT 1): 
    app/controllers/application_controller.rb:47:in `current_user' 
    app/controllers/application_controller.rb:51:in `set_current_user' 
    app/controllers/application_controller.rb:123:in `render_optional_error_file' 
    passenger (3.0.2) lib/phusion_passenger/rack/request_handler.rb:96:in `process_request' 
    passenger (3.0.2) lib/phusion_passenger/abstract_request_handler.rb:513:in `accept_and_process_next_request' 
    passenger (3.0.2) lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop' 
    passenger (3.0.2) lib/phusion_passenger/classic_rails/application_spawner.rb:321:in `start_request_handler' 
    passenger (3.0.2) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in `send' 
    passenger (3.0.2) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in `handle_spawn_application' 
    passenger (3.0.2) lib/phusion_passenger/utils.rb:479:in `safe_fork' 
    passenger (3.0.2) lib/phusion_passenger/classic_rails/application_spawner.rb:270:in `handle_spawn_application' 
    passenger (3.0.2) lib/phusion_passenger/abstract_server.rb:357:in `__send__' 
    passenger (3.0.2) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop' 
    passenger (3.0.2) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously' 
    passenger (3.0.2) lib/phusion_passenger/abstract_server.rb:180:in `start' 
    passenger (3.0.2) lib/phusion_passenger/classic_rails/application_spawner.rb:149:in `start' 
    passenger (3.0.2) lib/phusion_passenger/spawn_manager.rb:219:in `spawn_rails_application' 
    passenger (3.0.2) lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add' 
    passenger (3.0.2) lib/phusion_passenger/spawn_manager.rb:214:in `spawn_rails_application' 
    passenger (3.0.2) lib/phusion_passenger/abstract_server_collection.rb:82:in `synchronize' 
    passenger (3.0.2) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize' 
    passenger (3.0.2) lib/phusion_passenger/spawn_manager.rb:213:in `spawn_rails_application' 
    passenger (3.0.2) lib/phusion_passenger/spawn_manager.rb:132:in `spawn_application' 
    passenger (3.0.2) lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application' 
    passenger (3.0.2) lib/phusion_passenger/abstract_server.rb:357:in `__send__' 
    passenger (3.0.2) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop' 
    passenger (3.0.2) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously' 
    passenger (3.0.2) helper-scripts/passenger-spawn-server:99 
/!\ FAILSAFE /!\ Thu Jan 06 17:28:14 -0700 2011 
    Status: 500 Internal Server Error 
    PGError: no connection to the server 
: SELECT * FROM "users" WHERE ("users"."id" = 1) LIMIT 1 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract_adapter.rb:221:in `log' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/postgresql_adapter.rb:520:in `execute' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1002:in `select_raw' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/postgresql_adapter.rb:989:in `select' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/database_statements.rb:7:in `select_all_without_query_cache' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/query_cache.rb:60:in `select_all' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/query_cache.rb:81:in `cache_sql' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/query_cache.rb:60:in `select_all' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:664:in `find_by_sql' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:1578:in `find_every' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:1535:in `find_initial' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:616:in `find' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/base.rb:1910:in `find_by_id' 
    /home/user/application/releases/20110106230903/app/controllers/application_controller.rb:47:in `current_user' 
    /home/user/application/releases/20110106230903/app/controllers/application_controller.rb:51:in `set_current_user' 
    /home/user/application/releases/20110106230903/app/controllers/application_controller.rb:123:in `render_optional_error_file' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/rescue.rb:97:in `rescue_action_in_public' 
    /home/user/application/releases/20110106230903/vendor/plugins/exception_notification/lib/exception_notification/notifiable.rb:48:in `rescue_action_in_public' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/rescue.rb:154:in `rescue_action_without_handler' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/rescue.rb:74:in `rescue_action' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/base.rb:532:in `send' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/base.rb:532:in `process_without_filters' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/filters.rb:606:in `process' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/rescue.rb:65:in `call_with_exception' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:90:in `dispatch' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:121:in `_call' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:130 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/query_cache.rb:29:in `call' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/query_cache.rb:29:in `call' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/query_cache.rb:9:in `cache' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/query_cache.rb:28:in `call' 
    /var/lib/gems/1.8/gems/activerecord-2.3.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/string_coercion.rb:25:in `call' 
    /var/lib/gems/1.8/gems/rack-1.1.0/lib/rack/head.rb:9:in `call' 
    /var/lib/gems/1.8/gems/rack-1.1.0/lib/rack/methodoverride.rb:24:in `call' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/params_parser.rb:15:in `call' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/session/cookie_store.rb:99:in `call' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/failsafe.rb:26:in `call' 
    /var/lib/gems/1.8/gems/rack-1.1.0/lib/rack/lock.rb:11:in `call' 
    /var/lib/gems/1.8/gems/rack-1.1.0/lib/rack/lock.rb:11:in `synchronize' 
    /var/lib/gems/1.8/gems/rack-1.1.0/lib/rack/lock.rb:11:in `call' 
    /var/lib/gems/1.8/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:106:in `call' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/rack/request_handler.rb:96:in `process_request' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_request_handler.rb:513:in `accept_and_process_next_request' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/classic_rails/application_spawner.rb:321:in `start_request_handler' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/classic_rails/application_spawner.rb:275:in `send' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/classic_rails/application_spawner.rb:275:in `handle_spawn_application' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/utils.rb:479:in `safe_fork' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/classic_rails/application_spawner.rb:270:in `handle_spawn_application' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server.rb:357:in `__send__' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server.rb:180:in `start' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/classic_rails/application_spawner.rb:149:in `start' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/spawn_manager.rb:219:in `spawn_rails_application' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/spawn_manager.rb:214:in `spawn_rails_application' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server_collection.rb:82:in `synchronize' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/spawn_manager.rb:213:in `spawn_rails_application' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/spawn_manager.rb:132:in `spawn_application' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server.rb:357:in `__send__' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously' 
    /var/lib/gems/1.8/gems/passenger-3.0.2/helper-scripts/passenger-spawn-server:99 
+1

其實我想通了,我應該早一點回答:(連接必須是閒置的TCP開始發送了保活探頭之前的秒數) 在Ubuntu中的tcp_keepalive_time的默認值是2小時。我的交換機設置爲15分鐘後超時閒置連接。我只是設置了我的交換機以保持5432端口上的空閒連接超過2小時,並解決了我的問題。 基本錯誤。的回答 – patrickbrown 2011-03-29 15:15:33

回答

0

嘗試加入這一行到您的database.yml文件,關閉SSL數據庫連接:

sslmode: disable 
+0

謝謝,我會嘗試這一點,但你有沒有更多的信息?我認爲問題是SSL連接超時?是否有另一種方式來處理這個問題,仍然使用SSL?我在這裏處理敏感數據,我寧願保持連接儘可能安全。 – patrickbrown 2011-01-17 16:43:01

+0

對不起,這沒有奏效。感謝您的嘗試。任何其他想法? – patrickbrown 2011-01-18 18:35:48

1

橫跨在此之前,同時研究我自己的這個版本問題。看起來,如果您使用的菌種庫叉方法(可能的Phusion客運的一部分嗎?),這似乎並沒有成爲Postgres的在這一刻兼容。

我希望這提供了一個可能的線索,爲您和/或未來的訪客。