为什么Mongodb在Linux上的性能比在Windows上好?

时间:2014-06-12 06:50:54

标签: linux windows performance mongodb disk-io

我创建了一个程序来测试Linux(Ubuntu)和Windows(Server2008)上的分片MongoDB性能。 随着插入大量记录,Windows的磁盘活动时间非常高(100%),那么性能非常糟糕。但在Ubuntu上,磁盘的util%为60%~70%,性能优于Windows。 我可以说Linux上的MongoDB性能更好吗?

2 个答案:

答案 0 :(得分:12)

首先:Windows 2008服务器上可用的所有文件系统非常非常低效。与XFS或ext4相比,当Windows和Linux文件系统都经过优化时,它们的速度降低了40%。

第二:延迟可能是一个问题。当前Linux系统上的网络堆栈比W2008服务器上的网络堆栈快。

第三:如果你的盒子上运行了防火墙,延迟就成了远程访问的一个更大问题。虽然Linux“iptables快速而有效,因此防火墙设备的很大一部分都是基于它的,但是由于各种原因,Windows可用的防火墙不是。”

另外:Windows的内存效率不如Linux高。 MongoDB使用尽可能多的RAM(达到它需要的程度),例如用于在RAM中存储(副本)索引文件。与Linux机器相比,Windows占用的RAM大得多。因此,索引文件可能是从磁盘读取而不是从RAM读取的,这要慢几个数量级。

结论:在Windows系统上运行mongoDB是一个非常糟糕的想法。

修改

根据评论中的要求:

您可能已经认识到我引用了Principled Technologies的三份报告。虽然我没有以任何方式与他们联系,但恕我直言他们通过使用行业标准基准并明确优化两个操作系统来完成相关任务以及使用开箱即用的操作系统,在比较RHEL 6和Windows Server 2012方面做得很好。

有人可能会争辩说,这种比较并不能证明所有GNU / Linux发行版都比Windows Server 2012快,我们所讨论的功能是由Linux内核提供的功能,而且通常不会摆弄,所以它是安全的假设可以从所有主要分布中获得类似的结果。

Linux的部分极端性能优势(Linux的TCP堆栈的速度几乎是Windows Server的大4倍,对于大型邮件大小,在数据库应用程序中往往就是这种情况),我更新了我的断言在Windows系统上运行生产MongoDB是一个非常糟糕的想法。

答案 1 :(得分:1)

你可以说MongoDB在Linux上的性能优于Windows,因为与许多其他数据库不同,MongoDB严重依赖操作系统执行内存映射文件操作,如上所述here。正如之前的回答中所提到的,Windows server 2008 FS比Linux FS(ext4)要慢得多,那么它确实有意义MongoDB在Linux上的性能要比Windows好。它还取决于你是否有32位或64位系统。