我最近将Rails 3中的Rails应用程序更新为Rails 4,并将Ruby从1.9更新到2.3。 (我后来尝试了2.2和2.1,结果相同)。
我使用Passenger和NGINX。应用程序在大多数情况下运行正常,但是,每10个左右请求一次,将此消息随机返回到浏览器:
Incomplete response received from application
NGINX日志显示如下:
[Client 2-623] Sending 502 response: application did not send a complete response
28741/7f94e2312700 age/Cor/CoreMain.cpp:819 ]: Checking whether to disconnect long-running connections for process 2521, application /home/admin/apps/<myapp>/current/public
App 2059 stderr: request_handler/thread_handler.rb:226 ]: *** Passenger RequestHandler warning: someone tried to connect with an invalid connect password.
stderr: /home/admin/apps/<myapp>/shared/bundle/ruby/2.2.0/gems/builder-3.2.2/lib/builder/xchar.rb:146:
stderr: [BUG]
stderr: Segmentation fault at 0x00000000000000
经过一些调试后,我发现问题似乎是我视图中的strip_tags
调用,删除它会阻止此问题。我认为分段错误与Nokogiri有关,因为Rails清理是由Rails 4中的Nokogiri完成的。
这个问题很难调试,因为helper.strip_tags
似乎在控制台中工作正常,但它在视图中引起了这些问题。
我尝试了以下方法来解决问题但没有成功:
--use-system-libraries
构建Nokogiri,无论是否指定特定的库位置,任何配置都存在同样的问题。如果包含strip_tags
,我也会随机获得以下Rails应用程序错误。有时页面加载正常,有时会触发这些错误:
RuntimeError: rehash occurred during iteration
<my controller>#index
[GEM_ROOT]/gems/nokogiri-1.6.0/lib/nokogiri/xml/document.rb, line 210
NoMethodError: undefined method `empty?' for false:FalseClass
<my controller>#index
[GEM_ROOT]/gems/haml-4.0.7/lib/haml/compiler.rb, line 193