Microsoft警告不要在documentation中更改此值,但文档本身似乎不正确 - 它表示默认值为50毫秒,而我们的测试显示它实际上是10毫秒。如果我们可以安全地将值提高到50毫秒,我们可能会很高兴,所以问题是 - 我们可以这样做而不会失去MSMQ提供的交易保证吗?
PS。快速的背景知识“我们为什么要在这个世界中混淆这个价值” - 我们有一个应用程序位于几个事务性MSMQ队列之上。应用程序定期轮询其中一个队列,如果它找到一条消息,它将开始处理。应用程序本身工作正常。但我们看到的是,只要我们从队列中读取数据,MSMQ就会以每秒超过50次写入的速率开始写入磁盘,并且在每次读取完成后将继续写入大约10秒钟。应用程序(它似乎是事务日志刷新)。如果我们将LogMgrFlushInterval值增加到50ms,则写入速率降至每秒约12。我们关心这个问题的原因是,每秒50次写入,乘以运行的应用程序实例的数量,产生的负载基本上会压倒我们NAS上的CPU。我们正在寻找其他选项(减少运行实例的数量,将应用程序轮询间隔增加到10秒以上,获得更大的NAS),但与更改刷新间隔相比,这些都需要更多时间/金钱。
答案 0 :(得分:1)
必须将事务的所有部分写入磁盘以进行恢复。间隔越长,数据丢失的机会窗口就越大,如果出现硬件故障。
读取的数量听起来过多。您每秒处理多少条消息?