2014-02-06 56 views
0

嗨我们的一位客户在64位Windows Server 2008 R2 Enterprise上运行mongodb V2.2.3。mongodb flushing mmap大约需要20秒,不需要更新

我们目前每分钟看到mmap刷新次数超过20秒。 令我困惑的是它没有对磁盘进行任何写操作。 (磁盘写入字节接近0) 我们的访问数据的程序已暂时关闭。

所以所有连接的都是mongo shell。 Mongostat和mongotop没有任何东西

该数据库有1.3亿条记录。有356个mmap文件。

任何可能导致此问题的建议?

感谢

+0

您的Windows服务器托管在Azure上吗?如果不是,你有什么样的存储空间? – Stennie

+0

存储器直接连接到硬盘。系统在真实服务器上运行。 –

回答

0

如果你的工作集比内存显著大,MongoDB是不断将磁盘读取(而不仅仅是正常的尖峰时同步写入到磁盘),那么你真的应该分片蔓延跨多台机器/实例的数据。

+0

感谢您的一般提示,但它不能解释为什么当mmap不写任何东西时,需要20秒才能进行mmap。 –

0

鉴于行为你所描述的,并且你有大量的MMAP文件,我怀疑潜在的性能问题是MongoDB的JIRA问题跟踪SERVER-12401

在Windows中,内存映射文件刷新是同步操作。当OS虚拟内存管理器被要求刷新内存映射文件时,它向OS中的文件高速缓存管理器发出同步写入请求。这会导致磁盘IO延迟较大的Windows系统发生较大的I/O延迟,而在Linux上,相同的写入是异步的。

有几种可能的方法来提高Windows上的刷新性能,包括MongoDB服务器和Windows操作系统中的代码更改。目前正在进行一些工作来解决这些问题,现在Windows上的同步刷新行为已得到证实。

如果您使用更高延迟的本地存储(例如旋转磁盘),则可以通过升级到SSD或更好的spec'd驱动器来缓解此问题。

我会建议upvoting /观看SERVER-12401和相关的Jira问题的更新。

也值得从MongoDB 2.2升级到更新的版本,因为2.2现在已经过了更新版的生命周期。自那时以来,已经有两个主要的产品发布分支,包括一般性能/功能以及Windows支持方面的重大改进。