Ruby on rails nginx+;乘客+;rails 3.1=502坏网关?

Ruby on rails nginx+;乘客+;rails 3.1=502坏网关?,ruby-on-rails,ubuntu,nginx,passenger,Ruby On Rails,Ubuntu,Nginx,Passenger,我有最新的Nginx,运行的是Passenger、SQLite和Rails 3.1。不知何故,当我有乘客运行了一段时间,我开始得到“502坏网关”错误时,访问我的网站 以下是我的Nginx错误日志中的一个片段: 2011/06/27 08:55:33 [error] 20331#0: *11270 upstream prematurely closed connection while reading response header from upstream, client: xxx.xxx.

我有最新的Nginx,运行的是Passenger、SQLite和Rails 3.1。不知何故,当我有乘客运行了一段时间,我开始得到“502坏网关”错误时,访问我的网站

以下是我的Nginx错误日志中的一个片段:

2011/06/27 08:55:33 [error] 20331#0: *11270 upstream prematurely closed connection while reading response header from upstream, client: xxx.xxx.xx.x, server: www.example.com, request: "GET / HTTP/1.1", upstream: "passenger:unix:/passenger_helper_server:", host: "example.com"
2011/06/27 08:55:47 [info] 20331#0: *11273 client closed prematurely connection, so upstream connection is closed too while sending request to upstream, client: xxx.xxx.xx.x, server: www.example.com, request: "GET / HTTP/1.1", upstream: "passenger:unix:/passenger_helper_server:", host: "example.com"
这是我的
乘客状态--show=backtraces
输出:

Thread 'Client thread 7':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 10':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 11':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 12':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 13':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 14':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 15':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 16':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 17':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 18':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 19':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 20':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 21':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 22':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 23':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'Client thread 24':
 in 'Passenger::FileDescriptor Client::acceptConnection()' (HelperAgent.cpp:160)
 in 'void Client::threadMain()' (HelperAgent.cpp:603)

Thread 'MessageServer thread':
 in 'void Passenger::MessageServer::mainLoop()' (MessageServer.h:537)

Thread 'MessageServer client thread 35':
 in 'virtual bool Passenger::BacktracesServer::processMessage(Passenger::MessageServer::CommonClientContext&, boost::shared_ptr<Passenger::MessageServer::ClientContext>&, const std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&)' (BacktracesServer.h:47)
 in 'void Passenger::MessageServer::clientHandlingMainLoop(Passenger::FileDescriptor&)' (MessageServer.h:470)
乘客和Nginx之间的沟通似乎有问题

另外,查看Rails日志,很明显请求根本没有到达Rails,因为没有获得502错误的访问日志条目。因此,我最初认为任何机架中间件都有问题是不可能的。

。另请参见其他SO问题的答案,例如


最高147MB并没有任何异常迹象。从乘客的角度来看,您的502错误意味着工作进程存在其他问题。您应该检查Rails和Nginx日志文件以获取线索,也许
乘客状态--show=backtraces

尝试设置
乘客产卵方法保守
--显然乘客默认分叉设置和Rails 3.1也有问题,在我的情况下,它有助于增加Nginx中的
乘客最大池大小
设置配置文件

也许你也可以看看下面的帖子,它们也帮助我找到了这个解决方案:

我刚刚遇到nginx报告的这种致命的“502坏网关错误”,web堆栈是Ubuntu 12.04+Rails 3.2.9+Passenger 3.0.18+nginx 1.2.4,我花了2个小时才找到根本原因:

我的rails应用程序不需要数据库支持,所以我只需删除gem文件中的
gem'sqlite3'
,它在开发模式下运行良好,但在生产模式下会导致
502坏网关


因此,在Gemfile中添加回gem'sqlite3'
之后,这样的502错误网关错误消失了……

在Rails 4中对我来说也是如此,但我在/config/secrets.yml中添加了一个“SECRETKEYBASE”

production:
secretkeybase: # add yours here

如果不是与内存管理有关的话,我会投票支持迁移到或只是标记为“太具体”嗨@conny,很抱歉回复太晚,我一直很忙。我已经根据你的建议更新了我的问题。nginx错误日志明确显示了nginx和乘客之间的可疑之处。你对此有更多的反馈吗?如果需要,我可以将其标记为移动到serverfault.com。谢谢你。@bodacious我从来没有解决过这个问题。我曾考虑再次从一个干净的ubuntu映像完全创建服务器,但我跳上了Heroku的潮流,我真的不想在我几乎没有足够的时间开发我的应用程序并为我的客户提供支持的情况下处理这些问题。在重建服务器之前,请尝试设置
config.threadsafe我已经为此开了一张罚单:嗨--你能分享一下秘密密钥库和这个问题有什么关系吗?我们突然发现502个坏网关,这似乎也与我们所做的更改有关——我们更新了secrets.yml中的secret\u key\u base,而不是旧的Rails约定config/secret\u token.rb。但我们无法理解为什么这会产生影响,或者如何解决这个问题。。。
production:
secretkeybase: # add yours here