ベンダーによって作成された本番Webアプリケーション(.NET 4)のトラブルシューティングを行っています。
この数週間、このサイトで速度の問題が発生しています。
もともと、焦点はデータベース側にありました。方程式のその部分を除外することに抵抗がないので、今日はかなりの時間を費やしてWebアプリケーションをデバッグし、実際の速度の問題がどこから来ているのかを確認しました。
私が見つけたのは、Webアプリケーションのこの特定の部分で、新しいInternet Explorerウィンドウを開いて、データベースから返される大量のXMLデータを表示することです。
コードを調べ、デバッガーを使用して何が起こっているのかを理解しようとした後...これが私が見つけたものです:
この特定のページのコードがすべてのデータの入力を完了すると、iexploreプロセスには692,044Kのプライベートワーキングセットがあります。これは、msxml3.dllの多数の処理中のActiveXコントロールの結果のようです。
いくつかの調査の後、私はこのマイクロソフトの記事を発見しました: http ://support.microsoft.com/?scid=kb%3Ben-us%3B815112&x=15&y=14
「Microsoftは.NETアプリケーションでのMSXML(MicrosoftのCOMベースのXMLパーサー)の使用をサポートしていません。MSXMLは.NETFrameworkと互換性のないスレッドモデルとガベージコレクションメカニズムを使用します。.NETアプリケーションでのMSXMLの使用COMの相互運用性により、デバッグが困難な予期しない問題が発生する可能性があります。Microsoftは、.NETコードでMSXMLオブジェクトを直接インスタンス化して使用することを推奨またはサポートしていません。また、相互運用性の境界を越えてMSXMLインターフェイスポインタをマーシャリングすることも推奨またはサポートしていません。」
これは、ActiveXオブジェクトを作成しているコードの一部です。
var oTmp = new ActiveXObject("MSXML2.Domdocument");
oTmp.loadXML('<plan_data>' + returnValue + '</plan_data>');
プロセスエクスプローラーは、メモリが増加するにつれて、iexploreプロセスにロードされたいくつかのMSXML3.dllを取得します。この特定のウィンドウを閉じた後でも、約220,000 Kのメモリを使用しているため、適切にクリーンアップされていないようです(おそらく上記のガベージコレクションメカニズムが原因です)。
だから、私の質問は...これに精通している誰かが、これがWebアプリケーションの不十分に設計されたセクションのように見えるかどうかについてアドバイスを提供できますか?
この情報を開発者に渡して見てもらいたいのですが、誰かが最初に専門家のアドバイスをくれることを望んでいました。
ありがとうございました。