2

我一直在研究一系列自动负载测试脚本,我注意到当平均下来时,在 Heroku dyno(在本例中为 Hapi. js 服务器立即返回回复),尽管测功机报告自己有四个可用的 CPU。1 和 2 进程之间的差异是巨大的,吞吐量增加了近 100%。

我的猜测是 Intel CPU/超线程报告的内核数量是实际可用内核的两倍,并且 Node 并没有真正受益于调度的好处,但关于 Heroku dynos 规格的可用信息似乎很少。这是准确的,还是有其他原因在没有 I/O 的服务器上的 2 个线程上性能上限?

4

1 回答 1

2

这是由于几个原因:

  • Heroku dynos 运行在一个共享的 EC2 服务器上——这意味着 CPU 被分配给你和 X 数量的其他用户。
  • 根据您的邻居使用多少 CPU,您的性能可能会更好/更差。
  • 您的 CPU 将成为 Heroku(以及一般的 Node)上的最大瓶颈。

如果你正在做 CPU 密集型的工作,你需要在测功机上水平扩展。如果您正在做 IO 密集型的工作,那么随着时间的推移,您应该可以很好地垂直缩放到大型测功机 =)

更新:要在此处添加更多信息,这是虚拟化的工作方式。EC2 机器(和任何 linux 服务器)将始终报告核心机器的 CPU 总数,而不是 VM。希望有帮助

于 2014-11-21T07:05:06.540 回答