【问题标题】:Rails, Passenger and Memcached: Unable to find server during initializationRails、Passenger 和 Memcached:初始化期间无法找到服务器
【发布时间】:2010-05-28 15:23:07
【问题描述】:

我希望有人可以帮助我解决我确定是用户错误的问题。

以下配置详细信息适用于我的所有其他环境,包括集成、开发和 QA。但是,生产服务器给出以下错误:

<ActionController::Session::MemCacheStore:0x2b45f6acb248> unable to find server during initialization.

当我从有问题的服务器远程登录到 memcached 框并运行“stats”时,我得到:

STAT pid 16136  
STAT uptime 7398638  
STAT time 1275059978    
STAT version 1.2.8    
STAT pointer_size 64  
STAT rusage_user 7.085922  
STAT rusage_system 13.275981  
STAT curr_items 10878  
STAT total_items 11441  
STAT bytes 2020180  
STAT curr_connections 5  
STAT total_connections 306  
STAT connection_structures 11  
STAT cmd_flush 0  
STAT cmd_get 457326  
STAT cmd_set 11441  
STAT get_hits 412184  
STAT get_misses 45142  
STAT evictions 0  
STAT bytes_read 22600329  
STAT bytes_written 53036649  
STAT limit_maxbytes 30064771072  
STAT threads 5  
STAT accepting_conns 1  
STAT listen_disabled_num 0

下面是配置细节和堆栈跟踪。

config/environment.rb(重要部分):

config.action_controller.session_store = :mem_cache_store  
config.gem "memcache-client", :lib => 'memcache'  

config/environments/production.rb:

config.cache_store = :mem_cache_store

require 'memcache'  

# Caching  
# Memcached configuration  
memcache_options = {  
  :c_threshold => 100_000,  
  :compression => true,  
  :debug => false,  
  :namespace => 'gucci',  
  :readonly => false,  
  :urlencode => false,  
  :multithread => true  
}  

CACHE = MemCache.new memcache_options  
CACHE.servers = ['10.x.x.x:11211']  

堆栈跟踪:

/var/www/oro/production/releases/20100528130253/vendor/rails/actionpack/lib/action_controller/session/mem_cache_store.rb    20      in `initialize'  
1   /var/www/oro/production/releases/20100528130253/vendor/rails/actionpack/lib/action_controller/middleware_stack.rb   72  in `new'  
2   /var/www/oro/production/releases/20100528130253/vendor/rails/actionpack/lib/action_controller/middleware_stack.rb   72  in `build'  
3   /var/www/oro/production/releases/20100528130253/vendor/rails/actionpack/lib/action_controller/middleware_stack.rb   116     in `build'  
4   /var/www/oro/production/releases/20100528130253/vendor/rails/activesupport/lib/active_support/inflector.rb  361     in `inject'  
5   /var/www/oro/production/releases/20100528130253/vendor/rails/actionpack/lib/action_controller/middleware_stack.rb   116     in `each'  
6   /var/www/oro/production/releases/20100528130253/vendor/rails/actionpack/lib/action_controller/middleware_stack.rb   116     in `inject'  
7   /var/www/oro/production/releases/20100528130253/vendor/rails/actionpack/lib/action_controller/middleware_stack.rb   116     in `build'  
8   /var/www/oro/production/releases/20100528130253/vendor/rails/actionpack/lib/action_controller/dispatcher.rb     130     in `build_middleware_stack'  
9   /var/www/oro/production/releases/20100528130253/vendor/rails/actionpack/lib/action_controller/dispatcher.rb     81  in `initialize'  
10  /var/www/oro/production/releases/20100528130253/vendor/rails/actionpack/lib/action_controller/dispatcher.rb     51  in `new'  
11  /var/www/oro/production/releases/20100528130253/vendor/rails/actionpack/lib/action_controller/dispatcher.rb     51  in `run_prepare_callbacks'  
12  /var/www/oro/production/releases/20100528130253/vendor/rails/railties/lib/initializer.rb    631     in `prepare_dispatcher'  
13  /var/www/oro/production/releases/20100528130253/vendor/rails/railties/lib/initializer.rb    185     in `process'  
14  /var/www/oro/production/releases/20100528130253/vendor/rails/railties/lib/initializer.rb    113     in `send'  
15  /var/www/oro/production/releases/20100528130253/vendor/rails/railties/lib/initializer.rb    113     in `run'  
16  /var/www/oro/production/releases/20100528130253/config/environment.rb   29  
17  /usr/local//lib/ruby/site_ruby/1.8/rubygems/custom_require.rb   31  in `gem_original_require'  
18  /usr/local//lib/ruby/site_ruby/1.8/rubygems/custom_require.rb   31  in `require'
19  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/railz/application_spawner.rb   303     in `preload_application'  
20  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/railz/application_spawner.rb   252     in `initialize_server'  
21  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/utils.rb   255     in `report_app_init_status'  
22  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/railz/application_spawner.rb   237     in `initialize_server'  
23  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/abstract_server.rb     194     in `start_synchronously'  
24  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/abstract_server.rb     163     in `start'  
25  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/railz/application_spawner.rb   213     in `start'  
26  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/spawn_manager.rb   262     in `spawn_rails_application'  
27  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/abstract_server_collection.rb  126     in `lookup_or_add'  
28  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/spawn_manager.rb   256     in `spawn_rails_application'  
29  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/abstract_server_collection.rb  80  in `synchronize'  
30  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/abstract_server_collection.rb  79  in `synchronize'  
31  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/spawn_manager.rb   255     in `spawn_rails_application'  
32  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/spawn_manager.rb   154     in `spawn_application'  
33  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/spawn_manager.rb   287     in `handle_spawn_application'  
34  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/abstract_server.rb     352     in `__send__'  
35  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/abstract_server.rb     352     in `main_loop'  
36  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/lib/phusion_passenger/abstract_server.rb     196     in `start_synchronously'  
37  /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.10/bin/passenger-spawn-server   61

【问题讨论】:

  • +1 是一个很好的问题,而且问得很好——有很多上下文可以玩。很遗憾我没有给你答案:(

标签: ruby-on-rails memcached passenger


【解决方案1】:

事实证明,我的 memcache 守护进程没有监听 127.0.0.1,而是监听 localhost。从初始化文件中删除 -l localhost 选项后,它工作得很好。 (默认是在所有设备上监听。)

【讨论】:

    【解决方案2】:

    我在使用 memcached gem 时遇到了一些类似的问题,并切换到 dali。大理的开发似乎更加活跃,而且速度明显更快。我按照 github 页面上的说明,在大约十分钟内启动并运行了 dali。

    【讨论】:

      【解决方案3】:

      只是确保,但我看不到您将会话配置设置为 CACHE 常量的位置:

      config.action_controller.session = {
        :session_key => '_appname',
        :secret      => 'secret',
        :cache       => CACHE,
        :expires     => 10
      }
      

      这可能适用于 qa/dev/testing,因为我认为默认情况下 rails 会在 localhost 上查找 memcached 存储。而在生产环境中,memcached 服务器的 IP 似乎不同。

      【讨论】:

        【解决方案4】:

        在堆栈跟踪中有 3 行:

        /var/www/oro/production/releases/20100528130253/config/environment.rb   29 
        /usr/local//lib/ruby/site_ruby/1.8/rubygems/custom_require.rb   31  in `gem_original_require'  
        /usr/local//lib/ruby/site_ruby/1.8/rubygems/custom_require.rb   31  in `require'
        

        似乎缺少一些 gem,请查看第 29 行的 environment.rb

        你试过了吗?:

        sudo gem install memcached
        

        memcached 正在运行吗?

        sudo /etc/init.d/memcached start
        

        【讨论】:

        • 这些行并不表示缺少 gem 他们表示错误发生在 memcached gem 尝试加载时 - 那是当 memcached 意识到它无法访问服务器时。跨度>
        猜你喜欢
        • 2010-10-25
        • 2018-11-19
        • 1970-01-01
        • 2012-05-22
        • 2017-06-06
        • 1970-01-01
        • 1970-01-01
        • 2011-10-11
        • 2014-05-26
        相关资源
        最近更新 更多