2010-05-28 33 views
6

我希望有人可以幫我解決一個我確定是用戶錯誤的問題。Rails,Passenger和Memcached:初始化期間無法找到服務器

下面的配置細節適用於我所有其他環境,包括集成,開發和qa。然而,生產服務器提供以下錯誤:

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

當我遠程登錄到從服務器所遇到的問題和運行「統計」,我得到了memcached的盒子:

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' 

配置/環境/ 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 
+0

對於一個很好的問題+1,以及很好的問題 - 許多背景可供玩。可悲的是我沒有爲你回答:( – jaydel 2011-05-18 12:12:19

回答

0

只是確保,但我沒有看到您將會話配置設置爲您的CACHE常量的位置:

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

這可能適用於qa/dev/testing,因爲我認爲默認情況下rails會在localhost上查找memcached存儲。而在生產中,您似乎對memcached服務器有不同的ip。

0

在堆棧跟蹤有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' 

這似乎是一些寶石丟失,請查看上線的environment.rb 29

你嘗試?:

sudo gem install memcached 

它正在運行memcached?

sudo /etc/init.d/memcached start 
+0

這些行並不表示缺少一個gem它們表明當memcached gem試圖加載時發生錯誤 - 當memcached意識到它不能到達服務器時發生錯誤。 – 2011-05-26 13:32:33

1

我有一些類似的問題,與memcached gem切換到dali。達利的發展似乎更加活躍,而且速度明顯加快。我按照github頁面上的指示,在大約10分鐘內啓動了dali。

2

對我來說,事實證明,我的memcache守護進程沒有聽127.0.0.1而是聽localhost。從init文件中刪除-l localhost選項後,它可以很好地工作。 (默認是在所有設備上收聽。)

相關問題