2010-12-04 99 views
7

Je sais qu'il y a beaucoup de gens qui affichent ceci en ligne mais je n'ai pas été capable de trouver une solution.Ruby on Rails Errno :: EPIPE Pipe brisée

Je reçois Errno :: EPIPE après que mon site Web n'a pas été accédé pendant> 6-8 heures. J'ai lu à ce sujet peut-être avoir à faire avec le pilote ruby-mysql, mais je n'ai pas trouvé de solution. Voici la trace complète. Je cours un serveur de ruby ​​sur rails sur apache avec passager et mysql. Merci pour l'aide!!!

Errno::EPIPE Broken pipe 

ruby-mysql (2.9.3) lib/mysql/protocol.rb:617:in `flush' 
ruby-mysql (2.9.3) lib/mysql/protocol.rb:617:in `write' 
/usr/lib/ruby/1.8/timeout.rb:53:in `timeout' 
ruby-mysql (2.9.3) lib/mysql/protocol.rb:616:in `write' 
ruby-mysql (2.9.3) lib/mysql/protocol.rb:640:in `simple_command' 
ruby-mysql (2.9.3) lib/mysql/protocol.rb:545:in `synchronize' 
ruby-mysql (2.9.3) lib/mysql/protocol.rb:638:in `simple_command' 
ruby-mysql (2.9.3) lib/mysql/protocol.rb:413:in `statistics_command' 
ruby-mysql (2.9.3) lib/mysql.rb:502:in `stat' 
activerecord (3.0.0) lib/active_record/connection_adapters/mysql_adapter.rb:238:in `active?' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract_adapter.rb:148:in `verify!' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:250:in `checkout_and_verify' 
activesupport (3.0.0) lib/active_support/callbacks.rb:413:in `_run_checkout_callbacks' 
activesupport (3.0.0) lib/active_support/callbacks.rb:93:in `send' 
activesupport (3.0.0) lib/active_support/callbacks.rb:93:in `run_callbacks' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:249:in `checkout_and_verify' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:245:in `checkout_existing_connection' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:192:in `checkout' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:190:in `loop' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:190:in `checkout' 
/usr/lib/ruby/1.8/monitor.rb:242:in `synchronize' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:189:in `checkout' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:96:in `connection' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:318:in `retrieve_connection' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_specification.rb:97:in `retrieve_connection' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_specification.rb:89:in `connection' 
activerecord (3.0.0) lib/active_record/query_cache.rb:12:in `cache' 
activerecord (3.0.0) lib/active_record/query_cache.rb:31:in `call' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/callbacks.rb:46:in `call' 
activesupport (3.0.0) lib/active_support/callbacks.rb:415:in `_run_call_callbacks' 
actionpack (3.0.0) lib/action_dispatch/middleware/callbacks.rb:44:in `call' 
rack (1.2.1) lib/rack/sendfile.rb:107:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/remote_ip.rb:48:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/show_exceptions.rb:46:in `call' 
railties (3.0.0) lib/rails/rack/logger.rb:13:in `call' 
rack (1.2.1) lib/rack/runtime.rb:17:in `call' 
rack (1.2.1) lib/rack/lock.rb:11:in `call' 
rack (1.2.1) lib/rack/lock.rb:11:in `synchronize' 
rack (1.2.1) lib/rack/lock.rb:11:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/static.rb:30:in `call' 
railties (3.0.0) lib/rails/application.rb:168:in `call' 
railties (3.0.0) lib/rails/application.rb:77:in `send' 
railties (3.0.0) lib/rails/application.rb:77:in `method_missing' 
passenger (3.0.0) lib/phusion_passenger/rack/request_handler.rb:96:in `process_request' 
passenger (3.0.0) lib/phusion_passenger/abstract_request_handler.rb:513:in `accept_and_process_next_request' 
passenger (3.0.0) lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop' 
passenger (3.0.0) lib/phusion_passenger/classic_rails/application_spawner.rb:321:in `start_request_handler' 
passenger (3.0.0) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in `send' 
passenger (3.0.0) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in `handle_spawn_application' 
passenger (3.0.0) lib/phusion_passenger/utils.rb:479:in `safe_fork' 
passenger (3.0.0) lib/phusion_passenger/classic_rails/application_spawner.rb:270:in `handle_spawn_application' 
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:357:in `__send__' 
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop' 
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously' 
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:180:in `start' 
passenger (3.0.0) lib/phusion_passenger/classic_rails/application_spawner.rb:149:in `start' 
passenger (3.0.0) lib/phusion_passenger/spawn_manager.rb:219:in `spawn_rails_application' 
passenger (3.0.0) lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add' 
passenger (3.0.0) lib/phusion_passenger/spawn_manager.rb:214:in `spawn_rails_application' 
passenger (3.0.0) lib/phusion_passenger/abstract_server_collection.rb:82:in `synchronize' 
passenger (3.0.0) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize' 
passenger (3.0.0) lib/phusion_passenger/spawn_manager.rb:213:in `spawn_rails_application' 
passenger (3.0.0) lib/phusion_passenger/spawn_manager.rb:132:in `spawn_application' 
passenger (3.0.0) lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application' 
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:357:in `__send__' 
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop' 
passenger (3.0.0) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously' 
/usr/share/phusion-passenger/helper-scripts/passenger-spawn-server:99</blink> 
+0

Je vois exactement le même comportement en cours d'exécution Redmine sous Passenger 3.0.7, Rails 2.3.11, et Rack 1.1.1. J'ai essayé d'utiliser diverses gemmes MySQL (mysql, ruby-mysql, mysql2) et ajouté toutes sortes de spécifications supplémentaires pour contrôler le temps d'inactivité du pool de connexions de Passenger et la taille du pool en vain. Beaucoup de gens semblent se heurter à ce problème, mais je n'ai pas encore trouvé de solution viable. –

+0

Est-ce que l'une des réponses données est la réponse? Si oui, veuillez marquer la réponse – suweller

Répondre

1

j'ajouté ce qui suit à .../app/controllers/application_controller.rb

before_filter :verify_connection 

def verify_connection 
    Product.verify_active_connections! 
end 

(produit est l'un de mes modèles - tout devrait fonctionner) et ce problème a disparu.

+0

Toujours semble-t-il échouer. Merci pour la suggestion! –

0

J'ai eu cette erreur tout fonctionnait avec les notifications push de pomme solution de http://gaveen.owain.org/2008/04/errnoepipe-broken-pipe-mysql-error-in.html problème résolu

Créer un fil de lit qui utiliserait la connexion DB périodiquement Par exemple:

Thread.new do 
loop do 
    sleep(30*60) 
    logger.fatal("ActiveRecord::Base.verify_active_connections!") 
    ActiveRecord::Base.verify_active_connections! 
    ActiveRecord::Base.connection.select_value('select 1') 
end 
end 
5

À moins d'une spéciale raison pour vous en utilisant Ruby-mysql, retirer, installer la pierre précieuse mysql 'par défaut'

gem install mysql2 

et utiliser celui-ci dans votre Gemfile:

gem "mysql2" 

Selon l'auteur du blog mentionné par Bohdan Pohorilets, voici comment le problème a été résolu.