2009-12-15 99 views

回答

4

Richard Seroter有一個處理這個確切情況的帖子。

你需要設置在btsntsvc.exe.config文件中的最大連接數:

<add address = "*" maxconnection = "2" /> 

在那裏你通過IP地址過濾和MaxConnections最大設置爲你所需要的。

從它指出地址可以是一個URL或IP,比如說配置片斷低於HTTP Adapter MSDN文檔:

<configuration> 
    <system.net> 
    <connectionManagement> 
     <add address = "http://www.contoso.com" maxconnection = "5" /> 
     <add address = "http://www.northwind.com" maxconnection = "2" /> 
    </connectionManagement> 
    </system.net> 
</configuration> 

然後,您需要在發送開啓有序傳遞端口以確保BizTalk端不會超時到有限的連接數。

儘管看起來它完全符合您的要求,但我還會考慮某種編排模式來管理此問題,同時使用控制器編排來限制子項「發送到服務」的編排,這些編排可以在一個時間。對我而言,至少在不需要外部文檔的情況下可以輕鬆一點。

+0

謝謝。我也聽說你可以創建一個新的biztalk主機,將它關聯到肥皂適配器,並在發送端口中使用該主機,並通過主機配置來限制主機。我還沒有得到這個工作。 – Jeremy 2009-12-15 21:54:45

+0

是的 - 我也聽說過這種方法 - 對我來說這是三種中最糟糕的一種,但......並不能真正表達出爲什麼超越它有一個模糊的「錯誤」。主機節流當然是一個完全有效的主機使用,但對於單個Web服務......不太確定。 – 2009-12-15 22:10:10

+0

因此,對於地址,我可以把「http://serverdnsname/webservice.asmx」這樣的值作爲值嗎?那有效嗎? – Jeremy 2009-12-15 22:27:03

0

有幾件事情考慮關於大衛霍爾的回答

如果您在發送端口上設置了有序傳送,您將極大地影響吞吐量,特別是如果您有很多業務流程對這些業務流程進行多個呼叫到相同的端口正在脫水並等待他們的信息才能開啓港口。如果您有一些實例是來自Web服務的請求響應以及其他高負載且不緊急的其他實例,則也會導致問題。

爲了避免這種情況,我們使用了BizTalk Orchestration Throttling Pattern這也是從Richard Seroter最初,我們僅允許一定數量的高容量業務流程中的一個的時間旋轉,並留下一些連接免費爲低延遲請求/響應的呼叫。

此外maxConnections設置是針對每個主機實例的,因此您還必須避免將多個發送端口連接到位於不同主機實例上的同一服務器,或者如果組中有多個BizTalk服務器並且無法避免它設置maxConnections = TargetServermaxConnections /主機實例