Heroku 请求超时问题,-还有其他替代解决方案吗?
Heroku Request timeout issue, - Any other alt Solution?
我有 Heroku 的开发设置,它使用 Professional 1X dyno ($25),而后端应用程序使用 MongoLab。
问题不仅仅是实际页面加载,我经常收到请求超时错误。太烦人了
我连接到 MongoLab 服务的本地代码在相同的 rails 环境设置下完美运行,没有任何问题。
日志:
2015-09-19T05:58:55.478168+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path=“/pro/busi/3" host=appname.herokuapp.com request_id=637b8ed8-f85c-4bf3-ae01-1d81f4495bed fwd="73.170.78.112" dyno=web.1 connect=1ms service=30000ms status=503 bytes=0
2015-09-19T05:59:26.347172+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/favicon.ico" host=appname.herokuapp.com request_id=815dc81d-6adc-4aca-b30d-f7631d935f7b fwd="73.170.78.112" dyno=web.1 connect=1ms service=30001ms status=503 bytes=0
我打算从 heroku 转移到另一个虚拟主机。谁能告诉我 rails + mongodb 配置生产设置/另一个网络托管解决方案的 Ruby 的系统要求?
请指教
如果您只是在寻找 Heroku 的替代品,您可以通过谷歌搜索轻松找到很多 'heroku alternatives'。例如:https://www.engineyard.com
但是如果问题出在您的代码上,您可能 运行 也会遇到同样的问题。
由于您提供的信息有限,只能做一些猜测。无论如何,这里有一些您可以在 Heroku 上尝试的建议:
- 避免 N+1 次查询
- 拉取大量记录时分页。为什么有人想要在一页上看到 6000 多条记录?
- 如果您还没有设置 New Relic,请设置它。监控响应时间。
- 试试 2x dyno,看看是否能解决问题。
- 您在生产中使用哪个应用服务器?如果是 Unicorn,请检查设置并确保您没有分配太多进程。
回到 Heroku 与其他人的对比,除非您是一位经验丰富的 DevOps 人员,否则我建议您首先使用 Heroku,因为它非常容易部署和管理基础架构。
6000 条 AR 记录占用了大量内存 - 在 Rubyland 中这些是一些非常重的对象,您的工作人员可能会膨胀,然后在超过 heroku 限制时被杀死,并且您在等待时遇到超时让他们重生,
尝试在视图中使用 ActiveRecord::Batches.find_each 看看会发生什么,如果批量大小较低(例如大约 200),问题会消失吗?
查看您的内存消耗日志,看看在您在该页面上按 ctrl+R 四次后它们是否出现峰值。
编辑,至于替代方案...您始终可以设置自己的 EC2 实例,但我尽量不进入系统管理区域。问题可能不仅仅是 heroku,你的应用程序也有一些错误,值得调查,
你有多少个测功机运行?
我有 Heroku 的开发设置,它使用 Professional 1X dyno ($25),而后端应用程序使用 MongoLab。
问题不仅仅是实际页面加载,我经常收到请求超时错误。太烦人了
我连接到 MongoLab 服务的本地代码在相同的 rails 环境设置下完美运行,没有任何问题。
日志:
2015-09-19T05:58:55.478168+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path=“/pro/busi/3" host=appname.herokuapp.com request_id=637b8ed8-f85c-4bf3-ae01-1d81f4495bed fwd="73.170.78.112" dyno=web.1 connect=1ms service=30000ms status=503 bytes=0
2015-09-19T05:59:26.347172+00:00 heroku[router]: at=error code=H12 desc="Request timeout" method=GET path="/favicon.ico" host=appname.herokuapp.com request_id=815dc81d-6adc-4aca-b30d-f7631d935f7b fwd="73.170.78.112" dyno=web.1 connect=1ms service=30001ms status=503 bytes=0
我打算从 heroku 转移到另一个虚拟主机。谁能告诉我 rails + mongodb 配置生产设置/另一个网络托管解决方案的 Ruby 的系统要求?
请指教
如果您只是在寻找 Heroku 的替代品,您可以通过谷歌搜索轻松找到很多 'heroku alternatives'。例如:https://www.engineyard.com
但是如果问题出在您的代码上,您可能 运行 也会遇到同样的问题。
由于您提供的信息有限,只能做一些猜测。无论如何,这里有一些您可以在 Heroku 上尝试的建议:
- 避免 N+1 次查询
- 拉取大量记录时分页。为什么有人想要在一页上看到 6000 多条记录?
- 如果您还没有设置 New Relic,请设置它。监控响应时间。
- 试试 2x dyno,看看是否能解决问题。
- 您在生产中使用哪个应用服务器?如果是 Unicorn,请检查设置并确保您没有分配太多进程。
回到 Heroku 与其他人的对比,除非您是一位经验丰富的 DevOps 人员,否则我建议您首先使用 Heroku,因为它非常容易部署和管理基础架构。
6000 条 AR 记录占用了大量内存 - 在 Rubyland 中这些是一些非常重的对象,您的工作人员可能会膨胀,然后在超过 heroku 限制时被杀死,并且您在等待时遇到超时让他们重生,
尝试在视图中使用 ActiveRecord::Batches.find_each 看看会发生什么,如果批量大小较低(例如大约 200),问题会消失吗?
查看您的内存消耗日志,看看在您在该页面上按 ctrl+R 四次后它们是否出现峰值。
编辑,至于替代方案...您始终可以设置自己的 EC2 实例,但我尽量不进入系统管理区域。问题可能不仅仅是 heroku,你的应用程序也有一些错误,值得调查,
你有多少个测功机运行?