2009-05-05 49 views
13

我在DreamHost上托管Ruby on Rails 2.0.2应用程序。它位于运行于Phusion Passenger之上的Apache 2服务器上。Rails应用程序随机崩溃,错误“脚本头过早结束”

应用程序经常返回500错误“Rails应用程序无法正常启动”,但是在随机时间。它似乎发生在应用程序负载较高时,但我无法证实这一点。它每天只能获得大约2,000次综合浏览量,所以我不认为负载应该是一个问题。

Apache日志会将这500个响应与错误相关联:“脚本头过早结束”。只需在今天上午9点查看日志,错误就会每分钟显示三到四次。这显然是不可接受的。

不常见的是,应用程序抛出带有堆栈跟踪和错误“Broken pipe”的Phusion Passenger页面。

Rails日志不会列出任何这些错误。

在DreamHost上托管的登台和活动网站上都会发生这种情况,但我无法将其复制到本地开发服务器上。

所以我想真正的问题是:我在哪里开始调试这个问题?

回答

9

事实证明,我只是在DreamHost共享服务器上打了我的内存上限。

我在一个帐户下运行了几个Rails应用程序,其中很多仅用于测试和原型设计。 Rails使用了很多内存,所以我很快达到了我的配置。支持人员告诉我,“我查看了我们的日志,并且在过去的三天里它杀死了你的一个ruby进程2325次”。 哎呀。

解决方案:如果可以提供帮助,请尽量不要在共享环境中运行Rails。我将尽快将我的至少一个应用切换到VPS主机。

+0

是的,这是发生在我的我的rails应用程序后,我做了一些负载测试对同一台服务器上的PHP应用程序,导致了很多Apache的php.cgi进程运行,从而填满了内存。你碰巧找到任何解决方案来减少dreamhost上rails的内存使用情况? Thx – adamJLev 2010-05-26 01:55:10

1

您是否正在运行最新版本的乘客(2.2.2在撰写本文时)。我自己有一些错误,但大多数(如果不是全部的话)在升级我的乘客安装后消失了。

如果这不是答案,您可以随时尝试将您的Rails版本升级到2.3,并查看问题是否存在。

+0

我现在用DreamHost检查他们正在使用的Passenger的版本。将Rails升级到2.3可能是下一步,但我并不期望解决向后兼容性问题。 – Schrockwell 2009-05-05 16:29:54