Microsoft 警告不要在其文档中更改此值,但文档本身似乎不正确——它声明默认值为 50 毫秒,而我们的测试显示它实际上是 10 毫秒。如果我们可以安全地将值提高到 50 毫秒,我们可能会很高兴,所以问题是——我们能否做到这一点,并且不会失去 MSMQ 提供的事务保证?
PS。“我们为什么要搞乱这个值”的快速背景——我们有一个应用程序位于几个事务性 MSMQ 队列之上。应用程序定期轮询其中一个队列,如果找到消息,它将开始处理。应用程序本身运行良好。但是我们看到的是,一旦我们从队列中读取,MSMQ 将以每秒超过 50 次写入的速率开始写入磁盘,并且在每次读取完成后将继续这样做大约 10 秒应用程序(它似乎是事务日志刷新)。如果我们将 LogMgrFlushInterval 值增加到 50 毫秒,写入速率将下降到大约每秒 12 次。我们关心这个的原因是每秒写入 50 次,乘以正在运行的应用程序实例的数量,由此产生的负载基本上压倒了我们 NAS 上的 CPU。我们正在研究其他选项(减少运行实例的数量,将应用程序轮询间隔增加到 10 秒以上,获得更大的 NAS),但与更改刷新间隔相比,这些都花费更多的时间/金钱。