2013-04-22 28 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

相关问题