MSDTC (координатор распределенных транзакций) медленный первый запуск - PullRequest
4 голосов
/ 15 мая 2009

Я заметил, что очень простые распределенные транзакции занимают много времени (3-4 с) для выполнения при первом запуске. Но если тот же объем транзакции вызывается снова, это происходит намного быстрее (30 мс). Похоже, MSDTC вроде как засыпает через час. После того, как пройдет час, следующая транзакция займет 3-4 секунды.

Я не ожидаю большого трафика на сайте, поэтому вероятно, что между отдельными транзакциями может пройти много часов.

Возможно, это связано с тем, что служба MSDTC настроена на запуск вручную, но я убедился, что обе службы MSDTC работают автоматически.

Предполагается, что где-то есть настройка реестра, но мне не повезло найти что-то в MSDN.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 15 мая 2009

MSDTC запускает компоненты COM для обработки транзакций, и через 20 минут (я считаю, по умолчанию) компоненты выгружаются из памяти. Замедление, которое вы наблюдаете в первой транзакции, - это ускорение среды и загрузка вещей в память.

1 голос
/ 18 декабря 2013

Я сталкивался с этим вопросом сегодня, и я знаю, что вопрос довольно старый, но я исследовал похожую вещь и наткнулся на это:

http://support.microsoft.com/kb/197810

Этот КБ также старый, но мне кажется, что есть что-то вокруг закрытия незанятых соединений. В нем также перечислены параметры реестра. Я не уверен, поможет ли это, но мои сценарии совсем другие, так что это не проблема (если это действительно проблема), я просто хотел знать, что происходит.

Я не совсем уверен, что MSDTC работает как компонент COM +. К нему есть COM-интерфейс, но я нигде не смог найти упоминания о том, что он является компонентом COM +. Он указан как сервис, и COM-интерфейс можно обойти, так что MSDTC может быть доступен напрямую. При всем этом я действительно сомневаюсь, что это компонент COM +. Сказав это - у него есть несколько других зависимостей - таких как RPC mapper, я думаю, они также могут участвовать в этой проблеме.

...