首页 > 解决方案 > heroku 代码执行速度慢

问题描述

我想知道为什么我在 heroku 上的 node.js 代码的执行速度比我在 c9 上的该代码的确切副本慢?我正在使用相同的数据库运行代码,并且在 heroku 中选择更昂贵的测功机当然没有什么不同......

下面的示例显示了我的 console.logs 以及每行代码的时间戳...heroku 持续花费的时间是 c9 的 2-3 倍,我不明白为什么。

这个cpu有关系吗?但即使在理论上,用最昂贵的测功机运行 heroku 也无济于事......提前非常感谢你!

赫鲁库:

          mm:ss:SSS
line 1:   53:35:456
line 122: 53:35:460 - takes 4   ms
line 145: 53:35:600 - takes 140 ms
line 147: 53:35:671 - takes 71  ms
line 149: 53:35:818 - takes 147 ms

c9:

line 1:   59:20:141
line 122: 59:20:143 - takes 2  ms
line 145: 59:20:189 - takes 46 ms
line 147: 59:20:214 - takes 25 ms
line 149: 59:20:257 - takes 43 ms

标签: node.jsherokuc9.io

解决方案


应用程序缓慢有几个可能的原因,但要解决“为什么 Heroku 比 c9 慢”的问题,您首先需要比较机器上的规格。

Heroku dyno 规格发布在这里:https ://devcenter.heroku.com/articles/dyno-types在撰写本文时,这些是:

Dyno Type Sleeps Professional Features Memory (RAM) CPU Share Dedicated Compute free yes no 512 MB 1x no 1x-4x hobby no no 512 MB 1x no 1x-4x standard-1x no yes 512 MB 1x no 1x-4x standard-2x no yes 1024 MB 2x no 4x-8x performance-m no yes 2.5 GB 100% yes 11x performance-l no yes 14 GB 100% yes 46x

c9.io 上的“微型”计划(同样,在撰写本文时)似乎是 512Mb 的 RAM 和 1xCPU,这可能与 Heroku 上的免费 dyno 相当(来源:Cloud9 Hosting specs

如果您在使用更大的测功机类型(standard-2x或更高)时没有看到性能提升,这表明应用程序的瓶颈在其他地方。如果您安装应用程序监控插件,例如来自https://elements.heroku.com/addons/categories/monitoring的 New Relic这将为您提供应用程序在请求周期中花费时间的细分。

剩下的因素是您的环境与任何外部资源之间的延迟。例如,如果您在与 Cloud9 实例相同的区域中运行 RDS 数据,但您的 Heroku dyno 在不同的 AWS 区域中运行(请参阅https://help.heroku.com/X1JPM2Z6/where-is-each-region -geographically-located以确定这一点)那么 Heroku 和您的 RDS 实例之间的延迟将是响应时间的主要因素。


推荐阅读