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



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

应用程序是Rails 4.1。在过去的两周里,生产环境的性能显著下降,Chrome开发工具报告的响应时间如8s

典型:

总计​8.13秒
失速​3.643ms
DNS查找​2.637ms
初始连接235.532ms
SSL​133.738ms
已发送请求​0.546ms
等待(TTFB)​3.43s
内容下载​4.47s

我使用Nitrous开发环境,并在具有非预编译资产(具有镜像数据库)的开发服务器上获得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

我在开发服务器上看到了类似的数字,但实际的视觉性能是夜以继日的。dev的响应正如您所期望的那样-sub-1s响应和渲染。生产服务器延迟4-5s。

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

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

最新更新