w3wp.exeの機能をどのように知ることができますか?(またはパフォーマンスの問題を診断する方法)


42

作成したサイトでパフォーマンスの問題が発生しています。診断を開始する方法がわかりません。

短い説明:トラフィックが非常に少ない非常に小さなサイト(http://hearablog.com)があり、安っぽい専用サーバーでは、CPUが常に非常に高く、時々100%のままで、w3wp.exeそれのほとんどを取っています。典型的なシナリオでは、w3wp.exeが60%を使用し、SQL Serverが約30%を使用します。DBも非常に小さいです。

長い説明と詳細:

  • このサイトは、Cari.Netによって非常に安っぽいサーバーでホストされています。初めから、サーバーが正しく動作しない、一部の処理に時間がかかりすぎるなどの感覚があったため、これは最初から設定の問題になる可能性がありました。また、専用サーバーを用意しているはずの仮想サーバーを取得している可能性もありますが、サーバーが非常に遅い傾向があるという事実を除いて、これを示す証拠はありません。

  • サーバーはWindows 2008 Standard 64ビットで、SQL 2008 Express

  • ハードウェアはCeleron 2.80 GHz、1Gb RAM

  • WebサイトはASP.Net MVCで開発され、データアクセスにEntity Frameworkを使用しています。

  • さて、これはかなり安っぽいハードウェアですが、同等の(またはより悪い)ハードウェアを備えたこれらの人と一緒に他のサーバーを使用しました。ただし、他のサーバーにはW2003とSQL2005があり、MVC、LINQ、EFを使用しないASP.Net "WebForms" 2.0を使用しています。だから、2008年に行くのか、それとも他のものが大きなパフォーマンスの低下を予想するのかは分からない。

  • 私は定期的にMP3ファイル(5-20​​ Mb)を提供していますが、これは少し異常な負荷ですが、何らかの問題を引き起こしているのでしょうか?
    これにより、w3wpは多くのCPUを使用しますか?

  • ディスク使用量は非常に少ないようです。メモリは通常約90%ですが、ディスク使用量はページングが少ないことを示しているようです。

  • 私が取得トン、すべての私たちのクエリはかなり簡単ですが、30秒を引き継ぐクエリに対して、SQLのタイムアウトについての毎日の電子メールのを(またはする必要がありますが、EFはそれを台無しにすることができます)。

これは、100%CPUのこれらの「スプリント」の1つでリソースモニターがどのように見えるかを示しています。

代替テキスト

そして、いくつかのパフォーマンスカウンターのスナップショット: 代替テキスト

今、私を非常に混乱させているのは、w3wpのCPU使用率が非常に高いことです。それは本当に多くのことをすべきではない...だから私の質問は...

  • それが何をしているかを知る方法はありますか?たぶんそれをプロファイリングしますか?
  • 注目すべきパフォーマンスカウンターはありますか?
  • このハードウェア/ソフトウェア構成を考えれば、これは予想されますか?
  • これは何らかの構成の失敗が原因である可能性がありますが、どこから探し始めますか?

どうもありがとうございました。
ダニエル・マグリオラ

回答:


42

また、IISマネージャー内のワーカープロセスUIを使用して、現在実行中の要求を調べ、要求があればスタックしている場所を確認できます。IISマネージャーを開く->ツリーでサーバーをクリック->ダブルクリックワーカープロセスアイコン-> CPUを消費しているワーカープロセスをダブルクリックして、現在実行中のリクエストをリアルタイムで確認し、どのモジュールに時間がかかっているかを確認します。

また、失敗した要求トレースを使用して、要求ごとの時間を追跡し、どこで時間がかかっているかを確認することも検討してください。


2
これは有望で、実際に見たいもののように聞こえますが、実際にはこれらの画面は空です。一番上の大きな兆候によると、明らかに1秒以上かかっているリクエストのみが表示されており、リストが空であるため、どのリクエストも明らかではありません。より多くのリクエストを表示する方法についてのアイデアはありますか?1sフィルターを下げる方法は?ありがとう!
ダニエルマグリオラ

1
フィルターに0を入力して[Go]をクリックすると、0秒に設定されます。また、昇格したコマンドプロンプト「%windir%\ system32 \ inetsrv \ appcmd.exeリスト要求」から実行することもできます
カルロスアギラール

1
ありがとう、カルロス!これは、5分ごとにサーバーを殺す1つの要求(私たちが持っているcron)を見つけるためにやったことです(実行に3.5分かかったため、ほぼ常にCPU 100%でした)。ありがとう!!!
ダニエルマグリオラ

1
このUIは、アクセスされたURLを教えてくれました。残念ながら、それはasmx WebサービスへのPOSTであり、そのデータは利用できません。(ヘッドバン)
ロスプレッサー

5

OK、開始するには-サーバーは本当にくだらないです。しかし、それで十分です。

  • 仮想化については、ドライバーを確認してください。CPUを隠す仮想化プラットフォームはありませんが(誰かがCeleronにhyper-vまたはesxを置くと信じています)、ディスクなどのドライバーは目安です。

  • CPUはそれほど高くないはずです。残念なことに、このRAMを使用すると、ほとんどトーストになります。プロファイラーを追加し始めると、メモリがかなり消費されます。

私は...するだろう:

  • この時点で実行されているもののログを確認してください。
  • OSを2008 R2にアップグレードします-多くの詳細情報がそこにあります。

検査用の:

  • 開発環境で、サイトのコピーを作成し、パフォーマンステストを実行します。
  • そこでプロファイリングを行います。
  • 失敗したリクエストの追跡を使用して、失敗したリクエストを見つけます。

http://learn.iis.net/page.aspx/266/troubleshooting-failed-requests-using-tracing-in-iis-7/

そこから始まります。これは、問題がもっと多い場合のヒントを与えるかもしれません-hm-「分類可能」。

また、長期のパフォーマンスログも保持します。IOに注意してください(秒/読み取り、秒/書き込みのみが関連するものです)。残りはすべてIOが曖昧すぎますが、IOが必要以上に長くかかると、ディスクが遅れます。

少なくとも主要な指標として、この時点で構成の問題を除外します。何かがW3pリソースを使い果たしてしまったので、今それが何かを知る必要があります。

一般的に、これは私が物理的に持つのが大好きなサーバーではありません-それはとても小さいので、そこにマシンを持っていることは意味がありません。バーチャルが良いでしょう;)


ご回答どうもありがとうございました。いくつかの質問:現時点で実行されているものについて、どのログを確認しますか?(これが初心者の質問である場合はごめんなさい)-OSのアップグレード:私たちはそれを試すかもしれませんが、それが何かを壊すかもしれないと思う、多分、これはどれくらい安全ですか?-開発環境:問題は、私の開発環境では問題なく動作することです。CPU等、要求は失敗しない、無視することができる
ダニエルMagliola

I / Oログに関しては、言及したカウンターを追加したばかりで、CPUが高い間はすべて0です。私が見ているパフォーマンスカウンターのスクリーンショットを追加しました。スナップショットは全体を語るものではありませんが、それらの値はかなり安定している傾向があります。現在の接続数(これについては説明していません)が問題になると思いますか?それらの接続が要求/実行していることを把握する方法に関するアイデアはありますか?このような診断に役立つと思われる他のカウンターはありますか?
ダニエル・マグリオラ

さて、R2は非常に安全です。すべてをアップグレードしましたが、問題はありませんでした。とにかく....これはCPUの問題であり、特にプロファイラーをインストールするのに十分なRAMを備えていないことを考えると、それはひどい場合があります。実際に完全な再インストールを試みます。はい、残念ですが、R2を新しくインストールして問題が解決するかどうかを確認できることを意味します。悪いことは、リザーブシステムを使用してはいけないということです。そのため、問題が「ローカル」なのかそれともより一般的なのかを特定できません。または、IISを停止し、使用中のすべての一時フォルダーを消去します
TomTom

コンパイルし、再起動するとどうなるかを確認します。R2を使用すると、IISが開いている/開いているファイルを確認できます。これは1つのWebアプリケーションに対してローカルですか、それともすべてのWebサイトが停止している場合にも存在しますか?次に試すこと-すべてのサイトをオフにして、どのサイトが問題を引き起こしているかを調べます。
トムトム

最後に、仮想サーバーの問題は、私が知る限り、同じハードウェアに対して多かれ少なかれ同じ額を支払うことになり、さらに帯域幅の請求書が致命的であることです(オーディオファイルを提供することに留意してください)。私たちは...私たちが持っている場合は、より大きなサーバーに移動されますが、正直なところ、私たちは持っているトラフィックと、私たちが今まで100%のCPUを使用すべきではない、いくつかの問題が存在しなければならない
ダニエルMagliola

4

Process Explorerというプログラムを使用して、w3wpプロセスの下で実行されている個々のスレッドを監視してみてください。どのスレッドがすべての損傷を引き起こしているかを確認できるはずです。



1

私はTomTomが将来的に、特にこの時点でVirtualからより良い走行距離を得ることに同意します。問題を絞り込むためにローカルでデバッグ/プロファイリングすることは正しいことです。

Karnak The Magnificentの帽子とマントを着て、最初の封筒をお願いします。ラム反乱。OS、ASP.NET、貪欲なSQL Server Expressを1GBに入れると何が得られますか。

あなたの問題は、SQL Server Expressがバッファプールに使用可能なすべてのRAMを引き込んでいて、解放に時間がかかっていることだと思います。詳細については、http://support.microsoft.com/kb/321363を参照してください。また、IISには256MBのデフォルトキャッシュがあり、微調整する必要がある場合があります(https://stackoverflow.com/questions/2853135/controlling-asp-net-output-cache-memory-usage)。 デバッグ診断は、これをトラブルシューティングするための優れたツールです(大丈夫、おそらく大ハンマー)。

http://technet.microsoft.com/en-us/library/bb742546.aspxは、かなりまともな記事です。 http://social.technet.microsoft.com/forums/en-US/sharepointadmin/thread/706c653a-16b0-4696-85ee-9ae3552a582eは、別の考えられる問題としてアプリプールのリサイクルが狂ったことを指摘しています。


1

Perfmonの「Process」カウンターを使用して、w3wp.exeプロセスの個々の属性を確認します。ワーカープロセスのCPU時間のうち、カーネル時間はどれくらいですか?カーネル時間が長いことはページングを示している可能性がありますが、納得できないと言います。他の可能性はダフドライバーです。ワーカープロセスには23個のスレッドがアクティブになっていますが、これは良いことですが、何をしているのでしょうか?SysInternalsのProcessExplorerを試して、もう少し詳しく調べてください。また、どのTCP / IP接続が使用されているかを確認できます。私はSQL Expressを使用したことはありませんが、兄のようにメモリチューニングパラメーターを持っています。SQLはIISのメモリを枯渇させ、過度のページングを引き起こしていますか?


私がこれを正しく行っているかどうかを見てみましょう...%processor timeと%user timeカウンターをw3wpプロセス用に追加しましたが、どちらも常に完全に一致しています。それはカーネル時間がないことを意味しますか、これを間違った方法で見ていますか?(ごめん、私はこれで初心者です)
ダニエルマグリオラ

0

完全に関連しているわけではありませんが、クエリでNOLOCKを使用しているかどうかを確認してください。SQLタイムアウトの場合に役立つことがあります。

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