node.js - 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
解决方案
应用程序缓慢有几个可能的原因,但要解决“为什么 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 实例之间的延迟将是响应时间的主要因素。
推荐阅读
- bash - 根据条件在任何电话号码前添加“-”号
- python - 如何使用用户数据填充(填充数据)模型表单?
- android - 如何使用 https url 加载图像并使用标头(授权)
- javascript - 仅禁用表格中的选中复选框
- python - 如何提及命令的发送者?不和谐.py
- javascript - 如何消除axios中的控制台错误?
- javascript - 如何在 React 中使用 2 个不同的 'THIS' 值
- javascript - 如果我点击表格的外侧,如何隐藏菜单
- java - 使用 Jetty Websocket 客户端时如何抑制将日志输出到标准输出?
- ajax - 以编程方式在 actionlistener 中添加 ajax 行为