我想知道为什么我在heroku上的node.js代码的执行速度比我在c9上的代码的精确副本慢吗?我正在使用相同的数据库运行代码,并且在heroku中选择更昂贵的dyno当然没有什么区别。...
以下示例为每行代码显示带有时间戳的console.logs ... heroku持续花费的时间比c9长2-3倍,我不明白为什么。
这个CPU有关吗?但是即使从理论上讲,使用最昂贵的测功机运行heroku也无济于事... 提前非常感谢您!
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
答案 0 :(得分:0)
有几种可能导致应用程序运行缓慢的原因,但是要解决“为什么Heroku比c9慢”的问题,您首先需要比较机器的规格。
Heroku测功机规格发布在这里: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)
如果使用较大的dyno类型(standard-2x
或更高版本)时看不到性能提高,则表明该应用程序的瓶颈在其他地方。如果您安装了应用程序监视插件,例如https://elements.heroku.com/addons/categories/monitoring的新遗物这将为您提供应用程序在请求周期内花费时间的细分。
其余因素将是您的环境与任何外部资源之间的延迟。例如,如果您在与Cloud9实例相同的区域中运行RDS数据,但您的Heroku dyno在不同的AWS区域中运行(请参阅https://help.heroku.com/X1JPM2Z6/where-is-each-region-geographically-located确定),那么Heroku与RDS实例之间的延迟将是响应时间的主要因素。