2013-04-22 3 views
0

Microsoft предостерегает от изменения этого значения в своем documentation, но сама документация представляется неправильной - в ней указано, что значение по умолчанию составляет 50 мс, в то время как наше тестирование показывает, что оно фактически составляет 10 мс. Если бы мы могли безопасно повысить стоимость до 50 мс, мы, вероятно, были бы счастливы, поэтому вопрос в том, можем ли мы это сделать и не потерять транзакционные гарантии, которые предоставляет MSMQ?Можем ли мы изменить значение LogMgrFlushInterval для MSMQ?

PS. Быстрый справочник «почему в мире мы бы хотели испортить это значение» - у нас есть приложение, которое находится поверх двух транзакционных очередей MSMQ. Приложение периодически проверяет одну из очередей, и если она найдет сообщение, она начнет обработку. Само приложение прекрасно работает. Но мы видим, что, как только мы прочитаем из очереди, MSMQ начнет записывать на диск со скоростью более 50 записей в секунду и будет продолжать делать это примерно через 10 секунд после каждого прочтения, сделанного с помощью приложение (это, по-видимому, промывка журналов транзакций). Если мы увеличим значение LogMgrFlushInterval до 50 мс, скорость записи снизится примерно до 12 в секунду. Причина, по которой мы заботимся об этом, заключается в том, что при скорости 50 записей в секунду, умноженной на количество запущенных экземпляров приложений, результирующая загрузка существенно перегружает CPU на нашем NAS. Мы рассматриваем другие варианты (уменьшаем количество запущенных экземпляров, увеличиваем интервал опроса приложений за 10 секунд, получаем больше NAS), но все они стоят больше времени и денег по сравнению с изменением интервала очистки.

ответ

1

Все части транзакции должны быть записаны на диск для целей восстановления. Чем дольше интервал, тем больше окно возможностей для потери данных должно быть аппаратным сбоем.
Количество чтений звучит чрезмерно. Сколько сообщений вы обрабатываете в секунду?

+0

Это не считывание (которое мы контролируем), это проблема, это записи, которые MSMQ делает вне нашего контроля. Количество записей, вызванных промывкой буфером, похоже, не коррелирует с количеством сообщений, записанных в очередь. Большая часть нашего сервера обрабатывает менее 10 сообщений в секунду и все еще делает 50+ записей/сек. Назад к теме увеличения интервала промывки - вы говорите, что наши шансы потерять данные пропорциональны размеру интервала? (то есть, перейдя от 10 мс до 50 мс, у нас есть 5-кратный шанс потерять сообщение?) – user8032

Смежные вопросы