2010-05-28 5 views
6

Ich hoffe, jemand kann mir bei einem Problem helfen, von dem ich sicher bin, dass es sich um einen Benutzerfehler handelt.Rails, Passenger und Memcached: Server konnte während der Initialisierung nicht gefunden werden

Die Konfigurationsdetails unten funktionieren in allen meinen anderen Umgebungen einschließlich Integration, Entwicklung und qa. Allerdings geben die Produktionsserver den folgenden Fehler:

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

Wenn ich Telnet auf die Memcached-Box von dem Server das Problem und führen Statistik 'mit, die ich erhalten:

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 

Im Folgenden sind die Konfiguration Details und Stacktrace.

config/environment.rb (die wichtigen Teile):

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

config/Umgebungen/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 
+0

+1 für eine gute Frage und gut gefragt - viel Kontext zum Spielen. Leider habe ich keine Antwort für Sie :( – jaydel

Antwort

0

nur sicherstellen, aber ich sehe nicht, wo Sie die Sitzungskonfiguration auf Ihre CACHE-Konstante einstellen:

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

Dies könnte für qa/dev/testing funktionieren, da ich glaube, dass rails nach dem Memcached-Speicher auf localhost sucht. Während der Produktion scheinen Sie eine andere IP für den Memcached-Server zu haben.

0

Im Stacktrace gibt es drei Linien:

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

Es scheint einige Juwel zu fehlen, bitte die environment.rb on line 29

bewertet haben Sie versucht ?:

sudo gem install memcached 

Es läuft memcached?

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

Diese Zeilen zeigen nicht an, dass ein Edelstein fehlt Sie zeigen an, dass der Fehler auftritt, wenn der Memcached Gem versucht zu laden - das ist, wenn memcached erkennt, dass es nicht auf den Server gelangen kann. –

1

Ich hatte einige ähnliche Probleme mit dem Memcached Juwel und wechselte zu dali. Die Entwicklung von dali scheint aktiver und deutlich schneller. Ich folgte den Anweisungen auf der GitHub-Seite und war in etwa zehn Minuten fertig.

2

Für mich stellte sich heraus, dass mein Memcache-Daemon nicht auf 127.0.0.1, sondern auf localhost zu hören war. Nach dem Entfernen der Option -l localhost aus der init-Datei hat es perfekt funktioniert. (Standard ist, auf allen Geräten zu hören.)

Verwandte Themen