【问题标题】:Can we change the LogMgrFlushInterval value for MSMQ?我们可以更改 MSMQ 的 LogMgrFlushInterval 值吗?
【发布时间】:2013-04-15 23:37:10
【问题描述】:

Microsoft 告诫不要在其documentation 中更改此值,但文档本身似乎不正确——它指出默认值为 50 毫秒,而我们的测试显示它实际上是 10 毫秒。如果我们可以安全地将值提高到 50 毫秒,我们可能会很高兴,所以问题是——我们能做到这一点,并且不会失去 MSMQ 提供的事务保证吗?

附言。关于“我们为什么要搞乱这个值”的快速背景——我们有一个位于几个事务性 MSMQ 队列之上的应用程序。应用程序定期轮询其中一个队列,如果找到消息,它将开始处理。应用程序本身运行良好。但是我们看到的是,一旦我们从队列中读取,MSMQ 就会开始以每秒超过 50 次写入的速率写入磁盘,并且在每次读取完成后将继续这样做大约 10 秒应用程序(它似乎是事务日志刷新)。如果我们将 LogMgrFlushInterval 值增加到 50 毫秒,写入速率将下降到每秒 12 次左右。我们关心这一点的原因是每秒 50 次写入,乘以正在运行的应用程序实例的数量,由此产生的负载基本上压倒了我们 NAS 上的 CPU。我们正在研究其他选项(减少运行实例的数量,将应用程序轮询间隔增加到 10 秒以上,获得更大的 NAS),但与更改刷新间隔相比,这些都花费更多的时间/金钱。

【问题讨论】:

    标签: msmq


    【解决方案1】:

    事务的所有部分都必须写入磁盘以进行恢复。间隔越长,如果出现硬件故障,数据丢失的机会窗口就越大。
    读取量听起来过多。您每秒处理多少条消息?

    【讨论】:

    • 问题不是读取(我们控制的),而是 MSMQ 在我们控制之外进行的写入。缓冲区刷新导致的写入次数似乎与写入队列的消息数无关。我们的大多数服务器每秒处理少于 10 条消息,但仍然每秒写入 50 次以上。回到增加刷新间隔的话题——你是说我们丢失数据的机会与间隔大小成正比吗? (即从 10 毫秒到 50 毫秒,我们有 5 倍的机会丢失消息?)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    • 2011-08-31
    • 2012-01-17
    • 2018-10-05
    • 1970-01-01
    • 2021-12-17
    相关资源
    最近更新 更多