IIS7 ASP.NETアプリケーション-2つの同一のアプリプールにある2つの同一のアプリ、1つは応答性があり、1つは応答しない


12

仮想ディレクトリに(アプリケーションとして)インストールされ、独自のアプリプールでホストされるASP.NET(v4.0)Webアプリがあります。これは、アプリの各インスタンス(顧客ごと)で繰り返されます。

アプリプールは(クラシックではなく)統合モードであり、LoadUserProfileはtrueに設定されます。それ以外の場合、デフォルト設定。

現在、各インスタンスには独自のコード/構成のコピーがあり、独自のデータフォルダー(基本ファイルの読み取り/書き込み)があります。

このアプリの1つのインスタンスは正常に実行されます(比較に使用される操作は最大4秒かかります)。他のすべてのインスタンスの実行は遅くなります(同じ操作の場合は10〜25秒)。

低速のインスタンスを「最速」のアプリプールに移動すると、そのインスタンスが復活します。高速なインスタンスを低速なアプリプールに移動すると、そのインスタンスはクロール速度が低下します。

アプリプールは、最初は同じ方法で(手動で)作成されました。後でpowershellコピールーチンを使用して、より高速なアプリプールの正確なコピーを確保し、同じ動作を維持しました。apppool.configファイルを比較すると、仮想ディレクトリの割り当てがない限り同じファイルであることがわかります。

私が知る限り、ブロックされている共有リソースはなく、パフォーマンスの高いアプリプールをシャットダウンして再起動することでテストしました...遅いのはまだ遅いので、そのアプリプールを再起動すると(ロードされます)最後)それはまだ速いです...


そして、アプリのフォルダはバイト同一ですか?
usr

はい、トリプルチェックのみですが、唯一の違いはweb.configであり、ホストされている仮想ディレクトリの名前を指定します(そして、私はダブルチェックも唯一の違いでした)他のファイルはすべてバイトが同一です。 。

1つのアプリプールで時間がかかっているアプリは何をしていますか?VSを接続し、デバッガを一時停止してプロファイルを作成できますか?
USR

本番システムであるため、VSをサーバーにインストールしていませんが、それは私の次の目的地のようです。データアクセスおよびファイルアクセスコンポーネントに非常に詳細なロギングを追加する途中です。これまでのトレースではまだ具体的なことは何も示されていません。私はいくつかのより多くの統計情報を取得し、できるだけ早くそれを追加します-私はそのパスを避けるために私ができるように、誰かが似て遭遇した可能性があると楽観的だった

1
ユーザープロファイルを読み込んでいるので、それがこれらのアプリプールの主な違いのようです。これらのユーザーの一時的な場所、ファイルの書き込み権限を確認し、同じユーザーを使用してデータベースに接続する場合は、DBの権限も確認します。必要なのは、そのユーザーのクエリがタイムアウトするだけなので、可能であれば同じDBでテストします。幸運を!

回答:


1

さらに問題を切り分けるために、2つのセッションでホストシステム上でWireshark(または選択した他のパケットアナライザー)を実行することをお勧めします。私が作成している前提は、各アプリプールに割り当てられた一意のIPまたは一意のポートがあることです。

最初に、高速アプリプールのIP:ポートでフィルタリングすることにより、ベースラインパフォーマンスを取得します。「通常の」条件下で、アプリとの間のトラフィックがどのように見えるかを確認します。

2回目の実行では、遅い/応答しないアプリプールからトラフィックをキャプチャする必要があります。すべてのネットワークルーティングなどがボックスまで正しい場合、一方向に繰り返しリクエストが表示されるはずです。他の場所からのアプリの場合がほとんどですが、アプリが別のサーバーに大量のリクエストを行うものであれば、トラフィックはイングレスではなくエグレスで重い。

このテストは、問題がアプリ内にあるのか、または通信の不足/不足によりアプリへのリクエストがタイムアウトするTCP / IP関連の問題なのかを示します。

テストのタイムスタンプをサーバーのイベントログおよび(該当する場合)tracesinkログと相関させると、問題を特定できます。


0

Failed Request Tracing(FRT)は、これを追跡するための最良のツールです。パイプラインと、各ステップが完了するまでにかかった時間を示します。asp.net部分にあるのか、IISパイプライン自体にあるのかを指摘する必要があります。

FRTをセットアップするには、IISからサイトレベルでhttpステータス範囲が200〜999のFRTルールを作成し、FRTを有効にします(操作ウィンドウとは別の手順です)。

次に、問題を再現し、生成されたファイル(%SystemDrive%\ inetpub \ logs \ FailedReqLogFiles \ w3svc {siteid})を確認します。Internet Explorerで開きます。


0

明らかな理由もなくIISが長時間遅延する場合、通常、外部サービスがタイムアウトするのを待っていることを意味します。その後、別のアプローチを試みます。さらに言えば、これはWindowsまたはLinuxのほぼすべてに当てはまります。これらの状況で私にとって最初に疑われるのは、常にネットワーク名解決の構成です。無実であると証明されるまでは有罪です。

1人のユーザーが重複サイトの1つを押すと、これを再作成できますか?10〜20秒の応答時間を再作成するときに、CPUとディスクが何をしているのかを知っておくとよいでしょう。10〜20秒の間にあまり進行していないように見える場合は、バインド名とバインド名の名前解決を確認する必要があります。CPUまたはディスクが噛みついている場合は、どのプロセスがあまりにも激しく働いているのか、そしてその理由を把握する必要があります。

調査結果を投稿してください、私は興味があります。

PSまた、名前解決と、プレイ中の認証サービスへのアクセスも確認します。たとえば、ドメインサーバーに問い合わせる必要がある場合は、リストの最初のDNSサーバーがドメインのDNSサーバーであることを確認してください。


0

これは解決策ではありませんが、解決に向けて努力します。

  1. IISRESET(メンテナンス時間中)を実行するか、応答しないアプリプールに属するW3WPを強制終了します

  2. アプリケーションを起動する

  3. 応答していませんが、遅いアプリプールに属するW3WPのダンプファイルを取得します。いずれかを使用し、プロセスエクスプローラダンプファイルを作成するか、タスクマネージャを

  4. C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.XXXXXからmscordacwks.dllおよびmscorwks.dllを取得します

  5. これらのファイルを、ダウンロードできる場所から圧縮してアップロードします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.