2009-08-22 12 views
1

私たちのパートナーの1人と協力して、私たちは2つの別々のWebサービスセットを開発しました。最初のものは単純な「https URLへの投稿」スタイルのWebサービスでした。このWebサービスは、URLで引数を検査し、それに応じて動作するASP.NETでWebページを構築することによって容易になりました。この "Webサービス"(あなたがそれを呼び出せれば)は非常に安定しています。ASP.NET Webサービスのトラブルシューティング?

ある時点で、パートナーはSOAPベースのWebサービスの使用を開始するよう依頼しました。要求に応じて、以前のオブジェクトに基づいた新しい一連のWebサービスを実際の「Webサービス」として再構築しました。このWebサービスはあまり安定していません。週に1回程度、Nagiosは私たちのWebサービスが応答していないことを警告し、迅速なiisresetがそのトリックを行います。

ログ出力を分析してデバッガで作業しても、具体的なことはありませんでした。この新しいWebサービスのボリュームは、実際にはHTTP Webサービスよりもはるかに低いです。私は、これはコードの問題やプラットフォームの問題、または間に何かがあると思う。

私たちは、ほとんど改善して、試してみた:

  • はそれを独自のアプリケーションプールを与えるために、IISのオプションをいじっのVisual Studioデバッガ
  • にラボで
  • デバッグの動作を複製するには

私の質問、トラブルシューティングの次のステップは何ですか?

環境: のWindows Server 2003 Standard EditionのR2のService Pack 2 32ビット、Visual Studio 2005の、MS SQL 2005、.NET Frameworkの2.0.50727

+0

ウェブサービスが何をしているのかを知ることは役に立ちます。私たちはかなりウェブサービスを利用しており、何の理由もなくIISが落ちるのを通常見ません。 –

+0

通常、データベース接続を行い、クエリを実行します。 exeへのシステムコールもあります。 –

+0

チップをありがとう。私はこれのためにSQL Server Profilerのようなものが大好きです。procmonとperfmonを使ってアプリケーションをプロファイルします。 –

答えて

1

あなたのWebサービスをプロファイリングし、どのように理解することでいくつかの回答を得ることができますそのリソースを使用しています。 perfmonprocmonはこの点で非常に有用なツールです。

編集:約1週間後にエラーが発生すると言えるので、私が考えることができるのはリソース使用量だけです。 DB接続がクリーンアップされていることと、開いているファイル(exeへのシステムコール)が閉じていることを確認してください。

また、Webサービスで許容されている場合、IISは、時間の経過とともにパフォーマンスが低下するケースを処理するために定期的にアプリケーションプールのリサイクルをトリガーする設定を備えています。汚いですが、あなたの場合はうまくいくかもしれません。

+0

ええと、ちょうどトリックかもしれないアプリプールリサイクルのヒントありがとう。私たちは通常、DB接続を解放するのには良いですが、もう一度それをチェックします。システムコールと同じです。方向性に感謝します。 –

+0

私たちのアプリケーションプールは、明らかにデフォルトでは、29時間ごとにリサイクルされるように設定されていました。私はそれを「毎日午前4時に」に変更しました。そこにいる間、私たちは、アプリケーションプールが明らかに1つのプロセスに限定されていたことに気づき、 "Web Garden"機能を有効にしてこれを増やしました。それはあなたがオンにするべきではないもののように思えるが、私は何かを誤解しているかもしれない。 –

+0

29時間?ニース。それは "ランダムな"シャットダウンを説明します。ウェブガーデンについては、そうすることが実証された理由がある場合にのみ有効にしたいと思います。我々は重い負荷のwebserviceを実行し、まだそれを使用する必要性を見ていない... –

1

これ以上は進まないので、ここでは私たちのウェブサービスに関しては別の奇妙な問題があります。

Webサービスが応答を停止すると、メモリ使用率はどのようになりますか?システム上のビジーなWebサービスに関連するメモリやメモリの断片化に関する問題が発生しました(追加の断片化を引き起こしている他のものもありました)。小さなdllからロードするようにWebサービスを再調整し、(1つの大きなライブラリではなく)他のライブラリに依存すると、メモリの断片化を解決することができました。

何が起きているのかを特定するために、アプリケーションプールが存在する問題のあるiisワーカープロセスからダンプを取り、WinDbgを使用してそれをレビューしました。 http://www.microsoft.com/whdc/devtools/debugging/default.mspx

さらに、DebugDiagを使用して、ポスト・モート・ダンプを取得しました。 http://www.iis.net/downloads/default.aspx?tabid=34&g=6&i=1286

これは、別の方向を示します。

+0

それは、これは依存する大きなコードライブラリDLLを持っている。ありがとう、私はこれをチェックします。 –

+0

メモを追加するだけです。.NetはWebサービスが常駐するdllをメモリにロードして、コードアクセスセキュリティの特権をチェックします。ウェブサービスは大量のトラフィックを受け取り、LOHを分析すると、メモリの問題に遭遇したときに、dllの一部のコピーが400個もありました。 IISを再起動するとこれが解決されましたが、アプリケーションから誰もが追い出されます – Dan

関連する問題