2014-02-06 97 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支持方面的重大改進。