Node.js(Mac OSX)的性能问题 – 进程

我希望在这里find一些帮助。

我们在testing环境中使用节点,mongodb,supertest,mocha和spawn。

我们试图改进我们的mochatestingenv来并行运行testing,因为我们的testing用例现在运行了近5分钟! (600箱)

我们正在产卵,例如4个进程并行运行testing。 这是非常成功的,但只是在Linux上。
在我的Mac上,testing仍然运行非常缓慢。 似乎不同的stream程并不是真正的并行运行。

testing时间:

MacOSX的:
– 并行运行9个testing:37s
– 并行运行9个testing:41s

Linux的:
– 并行运行9个testing:16s
– 并行运行9个testing:25s

maxosx 2011年初:

10.9.2
16GB的内存
核心i7 2,2ghz
物理处理器:1
核心:4
线程:8

Linux的戴尔:

Ubuntu的
8GB的内存
核心i5-2520M 2.5ghz
物理处理器:1
核心:2
线程:4

我的问题是:

  1. 有没有提高macosx过程性能的提示? (除了ulimit,launchctl(maxfiles)?)

  2. 为什么在linux上testing运行得更快?

谢谢,凯特

我在这里复制了我的评论,因为它描述了大部分答案。

考虑到你的机器的规格,我怀疑额外的8内存和处理能力的影响很大,尤其是节点单一的过程模型,而且你只能启动4个进程。 我怀疑linux机器,8演出,2.5 ghz和4线程是一个瓶颈。 因此,我真的希望处理器运行测试的时间大致相当于两台机器。 考虑到你正在运行mongo,我会对你的磁盘I / O性能更感兴趣。 您的磁盘I / O最有可能减慢速度。 那里有什么规格?

您的规格:macosx:东芝5400RPM 8MB的Linux:希捷7200转16MB

您的Linux驱动器比您的Mac驱动器速度快了1.33倍,并且具有更大的缓存。 对于基于数据库的应用程序,硬盘性能至关重 在你的应用程序中花费的大部分时间将会等待I / O,特别是在Nodes单个进程的工作方法中。 我认为这是性能差异的90%的罪魁祸首,其余的事实是,Linux可能在后台进行的垃圾更少,进一步加剧了您的Mac磁盘驱动器的性能问题。

而且,启动多节点进程不太可能有助于此。 由于处理器时间不是你的瓶颈,启动太多的进程只会减慢你的磁盘。 另一个证明这是问题的是,在Linux上多个进程的性能比在mac上的多个进程的性能成比例地更好。 1进程几乎使您的5400驱动器的性能达到最高,因此您看不到运行多个进程会显着提高性能。 而多个Linux节点进程使用磁盘来充分发挥其潜力。 如果您要启动更多的进程,您可能会看到Linux操作系统的回报递减,除非您要升级到SSD。