2013-04-22 29 views
0

Microsoft警告不要在其documentation中更改此值,但文檔本身似乎不正確 - 它指出默認值爲50毫秒,而我們的測試顯示它實際上是10毫秒。如果我們可以安全地將價值上升到50毫秒,我們可能會很高興,所以問題是 - 我們可以這樣做,而不是放棄MSMQ提供的交易保證嗎?我們可以更改MSMQ的LogMgrFlushInterval值嗎?

PS。 「爲什麼我們要在世界上混淆這個價值」 - 我們有一個應用程序位於幾個事務性MSMQ隊列之上。應用程序定期輪詢其中一個隊列,如果它發現一條消息,它將開始處理。應用程序本身工作正常。但是我們所看到的是,只要我們從隊列中讀取數據,MSMQ就會以每秒超過50次寫入的速度開始寫入磁盤,並且在每次完成讀取之後將持續約10秒鐘應用程序(它似乎是事務日誌刷新)。如果我們將LogMgrFlushInterval值增加到50ms,則寫入速率會降至每秒12次左右。我們關心這個問題的原因是每秒執行50次寫入,乘以正在運行的應用程序實例的數量,所產生的負載基本上壓倒了我們NAS上的CPU。我們正在研究其他選項(減少運行實例的數量,將應用程序輪詢間隔增加到10秒以上,以獲得更大的NAS),但與更改刷新間隔相比,這些都會花費更多時間/金錢。

回答

1

事務的所有部分必須寫入磁盤才能恢復。時間間隔越長,如果發生硬件故障,數據丟失的機會窗口就越大。
讀取數量聽起來過多。你每秒處理多少條消息?

+0

這不是我們控制的閱讀(這是我們控制的),而是MSMQ在我們控制之外所做的寫作。由緩衝區刷新引起的寫入次數似乎與寫入隊列的消息數量不相關。我們的大多數服務器每秒處理不到10條消息,並且每秒處理速度仍然超過50次。 回到增加刷新間隔的話題 - 你是說我們丟失數據的機會與間隔大小成比例嗎? (即,從10ms到50ms,我們有5次丟失信息的機會?) – user8032 2013-04-23 13:27:23

相關問題