Heroku 环境无法解释的高响应时间
Unexplained high response time on Heroku environment
我正在使用付费 Heroku($35/mo 2x web dyno,$50/mo silver postgresdb)计划用于通常有 1-2 个并发用户的小型内部应用程序。数据库快照大小小于 1MB。
应用程序是 Rails 4.1。在过去的两周里,生产环境的性能出现了显着下降,其中 Chrome 开发工具报告响应时间为 8s
典型:
总计 8.13s
停滞 3.643 ms
DNS 查询 2.637 ms
初始连接 235.532 ms
SSL 133.738 毫秒
发送请求 0.546 ms
等待 (TTFB) 3.43 s
内容下载 4.47 s
我正在使用 Nitrous 开发环境并在具有非预编译资产(带有镜像数据库)的开发服务器上获得 sub-1s 响应。
我是一名新手程序员,不清楚如何调试它。为什么在 85 美元/月以上的 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
我在开发服务器上看到类似的数字,但实际的视觉效果是白天和黑夜。开发人员的响应与您预期的一样 - sub-1s 响应和渲染。生产服务器延迟4-5s。
我认为这与所建议的 ISP 无关,因为我实际上一直在旅行并在美国和欧洲看到相同的性能问题。
将 NewRelic add-on
添加到您在 Heroku 上的应用生态系统并探索正在发生的事情。您可以从 Heroku 的仪表板执行此操作。选择免费计划,您将获得 2 周的完整功能试用期。试用期过后会有一些限制,但无论如何它足以衡量小型应用程序的性能。
您也可以添加 Logentries add-on
,您将可以通过 Web 界面访问应用程序的日志历史记录。
我正在使用付费 Heroku($35/mo 2x web dyno,$50/mo silver postgresdb)计划用于通常有 1-2 个并发用户的小型内部应用程序。数据库快照大小小于 1MB。
应用程序是 Rails 4.1。在过去的两周里,生产环境的性能出现了显着下降,其中 Chrome 开发工具报告响应时间为 8s
典型:
总计 8.13s
停滞 3.643 ms
DNS 查询 2.637 ms
初始连接 235.532 ms
SSL 133.738 毫秒
发送请求 0.546 ms
等待 (TTFB) 3.43 s
内容下载 4.47 s
我正在使用 Nitrous 开发环境并在具有非预编译资产(带有镜像数据库)的开发服务器上获得 sub-1s 响应。
我是一名新手程序员,不清楚如何调试它。为什么在 85 美元/月以上的 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
我在开发服务器上看到类似的数字,但实际的视觉效果是白天和黑夜。开发人员的响应与您预期的一样 - sub-1s 响应和渲染。生产服务器延迟4-5s。
我认为这与所建议的 ISP 无关,因为我实际上一直在旅行并在美国和欧洲看到相同的性能问题。
将 NewRelic add-on
添加到您在 Heroku 上的应用生态系统并探索正在发生的事情。您可以从 Heroku 的仪表板执行此操作。选择免费计划,您将获得 2 周的完整功能试用期。试用期过后会有一些限制,但无论如何它足以衡量小型应用程序的性能。
您也可以添加 Logentries add-on
,您将可以通过 Web 界面访问应用程序的日志历史记录。