1

私は BizTalk の初心者ですが、最近、biztalk オーケストレーションが動かなくなり、メッセージ処理を再度取得するためにホスト インスタンスを再起動する必要があるという問題に遭遇しました。

私が奇妙なことに気付いたのは、テストを行うことです.タスクマネージャーのbiztalkホストインスタンスが大量のメモリを占有し、オーケストレーションが脱水モードになった後でもそれらを解放しないことがわかります.

これは、biztalk オーケストレーションで行っている不適切なプログラミングが原因ですか?

参考までに、私のオーケストレーションでは、WCF を呼び出して SQL Server 2008 R2 からデータを取得するユーティリティ DLL を使用しています。

オーケストレーションは、4 時間の非操作後に終了するようにタイマー ユーティリティでプログラムされています。

セットアップ: 参考までに、Windows Server 2008 r2、24 GB のメモリ、Intel xeon プロセッサで、biztalk 2009 を使用しています。

アップデート:

さて、あなたたちは正しいです、予想通り!

ホスト インスタンスを再起動しても問題は解決しません。今のところ、何が問題なのかまだわかりません。

メモリ ダンプを取得するためにデバッグ診断を実行しましたが、スキーマや Biztalk アプリケーションの他の部分によってメモリが消費されていると思われるので、おそらく問題ないと思います。

累積的な更新プログラムの長いリストに出くわし、この問題を解決するためにインストールする必要があるものを確認しようとしました。

ありがとう!

4

3 に答える 3

7

.Net ヘルパー コード内ですべての Wcf および SQL 呼び出しを実行することは、間違いなくベスト プラクティスではなく、ホスト インスタンスを定期的に再起動することでもありません。

すぐに使用できるアダプターを使用するようにコードをリファクタリングする方法はありますか? それができない場合は、メモリ プロファイラを使用して、メモリ リークがどこにあるかを確認してください。

于 2012-08-13T04:44:38.083 に答える
4

Biztalk を毎日再起動する必要はないと思います。

DLL 内のすべてのリソースが適切にクリーンアップ/破棄されるようにします。次に、テストでいくつかの測定を行い、サーバーに負荷をかけているのがコードではないかどうかを確認します。

于 2012-08-13T04:09:41.660 に答える
2

毎日 BizTalk ホスト インスタンスを再起動しないでください。BizTalk はエンタープライズ製品であり、通常はミッション クリティカルなアプリケーションで使用されます。

多くの記憶があると言うとき、それはどういう意味ですか? 既定では、BizTalk ホスト インスタンス プロセスのメモリ消費量の調整設定は、使用可能なシステム メモリの 25% です。したがって、サーバーに 32 GB のメモリがある場合、BizTalk サーバーは、スロットリング条件を適用する前に、最大 8 GB の消費が安全であると見なします。

Process Monitor (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) を使用して、BizTalk ホスト インスタンスを深く掘り下げ、メモリが消費されている場所を確認できます。私の経験では、常に何らかのカスタム コードが生成されます。カスタム DLL を調べて、XmlDocument などの手法を使用して大きなドキュメントを読み込んで特定の値を解析しているかどうかを確認します。

于 2012-08-26T15:17:00.517 に答える