2015-07-12 3 views
1

Поскольку мы обновили наше приложение до Rails 4.1.12 и Rack 1.5.5 из-за CVE, мы, кажется, получаем случайные 502. Приблизительно 1% запросов, и я не могу постоянно воссоздать проблему, только наблюдаю за ней (что крайне сложно, как вы можете себе представить). Мы работали на 4.1.8 и в стойке 1.5.2 ... Я попробовал понизить стойку и все еще наблюдаю за проблемами, однако из-за характера соблюдения, и т. Д. Возвращение к Rails 4.1.8 может быть довольно сложным.Исключение файлового дескриптора пассажира EBADF 502

Мы используем Passenger 5.0.6 (prod) и 5.0.13 (этап) с Ruby 2.1.5 с nginx.

Узор я вижу:

nginx-error: [ 2015-07-12 16:12:05.3947 2176/7f97fb7fe700 age/Hel/Req/Utils.cpp:89 ]: [Client 7-50] Sending 502 response: application did not send a  complete response 
nginx-error: App 2210 stderr: [ 2015-07-12 16:12:05.9232 2813/0x007f6eb5056088(Worker 1) utils.rb:85 ]: *** Exception Errno::EBADF in Passenger  RequestHandler's client socket (Bad file descriptor - writev()) (process 2813, thread 0x007f6eb5056088(Worker 1)): 
nginx-error: App 2210 stderr: #011from /usr/lib/ruby/vendor_ruby/phusion_passenger/ruby_core_io_enhancements.rb:41:in `writev' 
nginx-error: App 2210 stderr: #011from /usr/lib/ruby/vendor_ruby/phusion_passenger/ruby_core_io_enhancements.rb:41:in `writev' 
nginx-error: App 2210 stderr: #011from /usr/lib/ruby/vendor_ruby/phusion_passenger/utils/unseekable_socket.rb:126:in `writev' 
nginx-error: App 2210 stderr: #011from /usr/lib/ruby/vendor_ruby/phusion_passenger/rack/thread_handler_extension.rb:177:in `process_body' 
nginx-error: App 2210 stderr: #011from /usr/lib/ruby/vendor_ruby/phusion_passenger/rack/thread_handler_extension.rb:104:in `process_request' 
nginx-error: App 2210 stderr: #011from /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:149:in  `accept_and_process_next_request' 
nginx-error: App 2210 stderr: #011from /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:110:in `main_loop' 
nginx-error: App 2210 stderr: #011from /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler.rb:414:in `block (3 levels) in start_threads' 
nginx-error: App 2210 stderr: #011from /usr/lib/ruby/vendor_ruby/phusion_passenger/utils.rb:111:in `block in create_thread_and_abort_on_exception' 

Я поднял этот вопрос на IRC#passenger и не видел, чтобы кто переживает один и тот же вопрос. Любые намеки на то, как выяснить, что именно вызывает это?

+0

Был ли пассажир скомпилирован с Nginx в качестве модуля? Если да, пожалуйста, покажите версию Nginx и этого конкретного модуля пассажира – Anatoly

+0

Мы установили пассажира, используя официальный deb repo от Phusion ... – bruno

ответ

1

Автор пассажира здесь.

Я считаю, что эта проблема вызвана чем-то в приложении, может быть, драгоценным камнем - не пассажиром. Ошибка EBADF была поднята из приложения, поэтому вполне вероятно, что какой-то жемчуг, возможно, один с родным расширением, закрыл неправильный дескриптор файла. Но какой жемчужиной это, я понятия не имею. Стандартный способ отладки - отключить драгоценные камни один за другим, пока вы не найдете виновника. Это может быть тяжело, если ваш код зависит от драгоценных камней, но не так много способов справиться с этим.

+0

Спасибо @hongli ... очень благодарен, мы ударили головой о стену, однако мы медленно доходят до того же вывода, сколь бы болезненной эта отладка могла быть. Я отправлю обратно, когда найдем, что произошло, или, по крайней мере, как мы магически исправили его :) – bruno

 Смежные вопросы

  • Нет связанных вопросов^_^