【问题标题】:MySQL server has gone away in Rails app hosted on Google Compute Engine connecting to Cloud SQLMySQL 服务器已在连接到 Cloud SQL 的 Google Compute Engine 上托管的 Rails 应用程序中消失
【发布时间】:2014-04-14 21:16:05
【问题描述】:

我偶尔会在我的 Rails 3.2.13/Ruby 1.9.3 应用程序上收到MySQL server has gone away,该应用程序托管在 Google Compute Engine 实例上,连接到 Cloud SQL D1 (512 MB) 实例。流量非常低。重新加载网站后问题就消失了,但为时已晚,因为已经生成了 HTTP 500。

关于调音有什么建议吗? MySQL 服务器是否因流量低而断开连接?

ActiveRecord::StatementInvalid (Mysql2::Error: MySQL server has gone away: SHOW
FULL FIELDS FROM `users`):
activerecord (3.2.13) lib/active_record/connection_adapters/abstract_mysql_ada
pter.rb:245:in `query'
activerecord (3.2.13) lib/active_record/connection_adapters/abstract_mysql_ada
pter.rb:245:in `block in execute'
activerecord (3.2.13) lib/active_record/connection_adapters/abstract_adapter.r
b:280:in `block in log'
activesupport (3.2.13) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activerecord (3.2.13) lib/active_record/connection_adapters/abstract_adapter.rb:275:in `log'
activerecord (3.2.13) lib/active_record/connection_adapters/abstract_mysql_adapter.rb:245:in `execute'
activerecord (3.2.13) lib/active_record/connection_adapters/mysql2_adapter.rb:211:in `execute'
activerecord (3.2.13) lib/active_record/connection_adapters/abstract_mysql_adapter.rb:259:in `execute_and_free'
activerecord (3.2.13) lib/active_record/connection_adapters/abstract_mysql_adapter.rb:426:in `columns'
activerecord (3.2.13) lib/active_record/connection_adapters/schema_cache.rb:12:in `block in initialize'
activerecord (3.2.13) lib/active_record/model_schema.rb:228:in `yield'
activerecord (3.2.13) lib/active_record/model_schema.rb:228:in `default'
activerecord (3.2.13) lib/active_record/model_schema.rb:228:in `columns'
activerecord (3.2.13) lib/active_record/model_schema.rb:237:in `columns_hash'
activerecord (3.2.13) lib/active_record/locking/optimistic.rb:131:in `locking_enabled?'
activerecord (3.2.13) lib/active_record/relation.rb:170:in `exec_queries'
activerecord (3.2.13) lib/active_record/relation.rb:160:in `block in to_a'
activerecord (3.2.13) lib/active_record/explain.rb:41:in `logging_query_plan'
activerecord (3.2.13) lib/active_record/relation.rb:159:in `to_a'
activerecord (3.2.13) lib/active_record/relation/finder_methods.rb:380:in `find_first'
activerecord (3.2.13) lib/active_record/relation/finder_methods.rb:122:in `first'
orm_adapter (0.4.0) lib/orm_adapter/adapters/active_record.rb:17:in `get'
devise (2.2.4) lib/devise/models/authenticatable.rb:208:in `serialize_from_session'
devise (2.2.4) lib/devise.rb:437:in `block (2 levels) in configure_warden!'
warden (1.2.1) lib/warden/session_serializer.rb:35:in `fetch'
warden (1.2.1) lib/warden/proxy.rb:212:in `user'
warden (1.2.1) lib/warden/proxy.rb:318:in `_perform_authentication'
warden (1.2.1) lib/warden/proxy.rb:127:in `authenticate!'
devise (2.2.4) lib/devise/controllers/helpers.rb:48:in `authenticate_user!'
activesupport (3.2.13) lib/active_support/callbacks.rb:407:in `run1684931682470039459process_action2800431035017339248_callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.13) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.13) lib/abstract_controller/callbacks.rb:17:in `process_action'
actionpack (3.2.13) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (3.2.13) lib/action_controller/metal/rescue.rb:29:in `process_action'
actionpack (3.2.13) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
activesupport (3.2.13) lib/active_support/notifications.rb:123:in `block in instrument'
activesupport (3.2.13) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
activesupport (3.2.13) lib/active_support/notifications.rb:123:in `instrument'
actionpack (3.2.13) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
actionpack (3.2.13) lib/action_controller/metal/params_wrapper.rb:207:in `process_action'
activerecord (3.2.13) lib/active_record/railties/controller_runtime.rb:18:in `process_action'
actionpack (3.2.13) lib/abstract_controller/base.rb:121:in `process'
actionpack (3.2.13) lib/abstract_controller/rendering.rb:45:in `process'
actionpack (3.2.13) lib/action_controller/metal.rb:203:in `dispatch'
actionpack (3.2.13) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
actionpack (3.2.13) lib/action_controller/metal.rb:246:in `block in action'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:73:in `call'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
journey (1.0.4) lib/journey/router.rb:68:in `block in call'
journey (1.0.4) lib/journey/router.rb:56:in `each'
journey (1.0.4) lib/journey/router.rb:56:in `call'
actionpack (3.2.13) lib/action_dispatch/routing/route_set.rb:612:in `call'
omniauth (1.1.4) lib/omniauth/strategy.rb:184:in `call!'
omniauth (1.1.4) lib/omniauth/strategy.rb:164:in `call'
omniauth (1.1.4) lib/omniauth/strategy.rb:184:in `call!'
omniauth (1.1.4) lib/omniauth/strategy.rb:164:in `call'
warden (1.2.1) lib/warden/manager.rb:35:in `block in call'
warden (1.2.1) lib/warden/manager.rb:34:in `catch'
warden (1.2.1) lib/warden/manager.rb:34:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
rack (1.4.5) lib/rack/etag.rb:23:in `call'
rack (1.4.5) lib/rack/conditionalget.rb:25:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/head.rb:14:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/flash.rb:242:in `call'
rack (1.4.5) lib/rack/session/abstract/id.rb:210:in `context'
rack (1.4.5) lib/rack/session/abstract/id.rb:205:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/cookies.rb:341:in `call'
activerecord (3.2.13) lib/active_record/query_cache.rb:64:in `call'
activerecord (3.2.13) lib/active_record/connection_adapters/abstract/connectio
n_pool.rb:479:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/callbacks.rb:28:in `block i
n call'
activesupport (3.2.13) lib/active_support/callbacks.rb:405:in `run_280652940
067824407_call1265643099882031984_callbacks'
activesupport (3.2.13) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.13) lib/active_support/callbacks.rb:385:in `_run_call_callb
acks'
activesupport (3.2.13) lib/active_support/callbacks.rb:81:in `run_callbacks'
actionpack (3.2.13) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `
call'
actionpack (3.2.13) lib/action_dispatch/middleware/show_exceptions.rb:56:in `c
all'
railties (3.2.13) lib/rails/rack/logger.rb:32:in `call_app'
railties (3.2.13) lib/rails/rack/logger.rb:16:in `block in call'
activesupport (3.2.13) lib/active_support/tagged_logging.rb:22:in `tagged'
railties (3.2.13) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.13) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.5) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.5) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.13) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.5) lib/rack/lock.rb:15:in `call'
rack-cache (1.2) lib/rack/cache/context.rb:136:in `forward'
rack-cache (1.2) lib/rack/cache/context.rb:245:in `fetch'
rack-cache (1.2) lib/rack/cache/context.rb:185:in `lookup'
rack-cache (1.2) lib/rack/cache/context.rb:66:in `call!'
rack-cache (1.2) lib/rack/cache/context.rb:51:in `call'
railties (3.2.13) lib/rails/engine.rb:479:in `call'
railties (3.2.13) lib/rails/application.rb:223:in `call'
railties (3.2.13) lib/rails/railtie/configurable.rb:30:in `method_missing'
unicorn (4.6.3) lib/unicorn/http_server.rb:552:in `process_client'
unicorn (4.6.3) lib/unicorn/http_server.rb:632:in `worker_loop'
unicorn (4.6.3) lib/unicorn/http_server.rb:500:in `spawn_missing_workers'
unicorn (4.6.3) lib/unicorn/http_server.rb:511:in `maintain_worker_count'
unicorn (4.6.3) lib/unicorn/http_server.rb:277:in `join'
unicorn (4.6.3) bin/unicorn:126:in `<top (required)>'
/home/mparaz/.rvm/gems/ruby-1.9.3-p545@moovd/bin/unicorn:23:in `load'
/home/mparaz/.rvm/gems/ruby-1.9.3-p545@moovd/bin/unicorn:23:in `<main>'
/home/mparaz/.rvm/gems/ruby-1.9.3-p545@moovd/bin/ruby_executable_hooks:15:in `eval'
/home/mparaz/.rvm/gems/ruby-1.9.3-p545@moovd/bin/ruby_executable_hooks:15:in `<main>'

【问题讨论】:

    标签: ruby-on-rails-3 google-cloud-sql google-compute-engine


    【解决方案1】:

    观察到的行为很可能是为实例配置的计费计划的结果。如果使用“按使用”计费计划;实例将在访问时启动,并在上次访问后 15 分钟继续启动。

    有关详细信息,请查看“定价和计费”部分 here

    【讨论】:

    【解决方案2】:

    另一个考虑因素是 Google Compute Engine 会终止超时空闲连接。旧 Cloud SQL Google Group 中描述了此问题和解决方法:

    https://groups.google.com/forum/#!msg/google-cloud-sql-discuss/cLLxUxiS5ck/c5dsYCvZhDEJ

    相关的 Google Compute Engine 文档:

    https://developers.google.com/compute/docs/networking#overview

    【讨论】:

      猜你喜欢
      • 2020-09-25
      • 2023-03-04
      • 2018-08-15
      • 1970-01-01
      • 1970-01-01
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多