Heroku环境中无法解释的高响应时间

时间:2015-02-22 15:13:25

标签: ruby-on-rails heroku response server lag

我使用付费Heroku($ 35 / mo 2x web dyno,$ 50 / mo silver postgresdb)计划一个小型内部应用程序,通常有1-2个并发用户。数据库快照大小小于1MB。

App是Rails 4.1。在过去两周内,生产环境中的性能显着下降,Chrome开发工具报告响应时间为8s

典型:

总计8.13s
停滞3.643 ms
DNS Lookup 2.637 ms
初始连接235.532 ms
SSL 133.738 ms
要求发送0.546毫秒
等待(TTFB)3.43 s
内容下载4.47 s

我正在使用Nitrous dev环境并使用非预编译资产(带有镜像数据库)在dev服务器上获得sub-1s响应。

我是一名新手程序员,并不清楚如何调试它。为什么我会在$ 85 / mo + Heroku计划中看到比开发环境慢800%的性能?鉴于我目前的编程技能水平,我的应用程序可能很难优化(那里有几个N + 1查询......)但是当生产有1-2个并发用户时有多糟糕?

日志中的示例如果有帮助: sample#current_transaction=16478 sample#db_size=18974904bytes sample#tables=28 sample#active-connections=6 sam ple#waiting-connections=0 sample#index-cache-hit-rate=0.99929 sample#table-cache-hit-rate=0.99917 sample#load-avg-1m=0.365 sample#load-avg-5m=0.45 sample#load-avg-15m=0.445 sample#read-iops= 37.587 sample#write-iops=36.7 sample#memory-total=15405616kB sample#memory-free=1409236kB sample#memory-cached=12980840kB sample#memory-postgres=497784kB

来自服务器日志的示例: Completed 200 OK in 78ms (Views: 40.9ms | ActiveRecord: 26.6ms

我在开发服务器上看到类似的数字,但实际的视觉效果是白天和黑夜。开发响应正如您所期望的那样 - 子1响应和渲染。生产服务器延迟4-5秒。

我不认为它与建议的ISP有关,因为我实际上一直在旅行并看到来自美国和欧洲的相同性能问题。

1 个答案:

答案 0 :(得分:1)

NewRelic add-on添加到Heroku上应用程序的生态系统中,并探索正在进行的操作。你可以从Heroku的仪表板上完成。选择免费计划,您将获得2周试用期的全部功能。试用期结束后会有一些限制,但无论如何它足以衡量小应用程序的性能。 您还可以添加Logentries add-on,然后您就可以通过网络界面访问应用程序的日志历史记录。