代码之家  ›  专栏  ›  技术社区  ›  Rodney

Rails、Passenger和Memcached:初始化期间找不到服务器

  •  6
  • Rodney  · 技术社区  · 16 年前

    我希望有人能帮我解决一个我确信是用户错误的问题。

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

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

    当我从有问题的服务器telnet到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
    

    下面是配置详细信息和stacktrace。

    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']  
    

    Stacktrace:

    /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
    
    4 回复  |  直到 12 年前
        1
  •  2
  •   CBuente    15 年前

    对我来说,事实证明,我的memcache守护进程没有监听127.0.0.1,而是监听本地主机。从init文件中删除-l localhost选项后,它工作正常。(默认值是在所有设备上侦听。)

        2
  •  1
  •   Rourke    15 年前

    我对memcached gem也有一些类似的问题,然后切换到 dali . 大理的发展似乎更为活跃,速度也明显更快。我按照Github页面上的指示,让Dali在大约10分钟内启动并运行。

        3
  •  0
  •   Jack Chu    15 年前

    只是确定一下,但我看不到您在哪里将会话配置设置为缓存常量:

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

    这对于QA/dev/testing可能有效,因为我认为默认情况下Rails会在本地主机上查找memcached存储。而在生产环境中,您似乎对memcached服务器拥有不同的IP。

        4
  •  0
  •   Felipe Rojas    15 年前

    在stacktrace中有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'
    

    好像有宝石丢失了,请在第29行查看environment.rb

    你试过了吗?:

    sudo gem install memcached
    

    是Memcached在运行吗?

    sudo /etc/init.d/memcached start
    
    推荐文章