6

New Relicを使用して、かなり大きなWebサイトであるhttp://alternativeto.netのパフォーマンスを監視し始めました。

私が気付いたのは、彼らが「TransferRequestHandler」として報告するメソッドにかなりの時間が費やされていることです。それに飛び込むと、実際に時間がかかっているのは「BeginRequest()」メソッドであることがわかります。

NewRelicではこのように見えます。

http://content.screencast.com/users/stuckish/folders/Jing/media/22c8137e-21b1-4b36-8185-15989e173f57/2012-10-30_0941.png

問題になる可能性のあるものを見つけるために私が見つけた最も近いものは、StackOverflowのこのスレッドです。すべてのASP.NetWebサイトが遅い理由を発見したばかりで、それをどうするかを考えていますが、私は実際にセッションモジュールを交換しようとしましたが、それは役に立ちませんでした。

このサイトは、ASP.NETMVCとWebformsのハイブリッドです。

これはロングショットであり、「先に進む」ことはあまりないことに気づきましたが、誰かが私を正しい方向に導き、最も重要なことに、ローカルでの動作などを再現できる場合、私は非常になりますありがたい :)

4

1 に答える 1

4

BeginRequestはすべてが開始する場所であるため、通常は遅延が発生しますが、遅延の原因となるコードの実際のポイントを見つけるには、さらに深く掘り下げる必要があります。

セッションが問題である場合は、ユーザーがファイルのダウンロードなどの長いアクションを実行したり、ページが長時間スタックする手順を複雑にしたりするときに、セッションを無効にします。

セッションに関連して:
aspxページを呼び出して画像をランダムに遅くする
ASP.NETサーバーはページを非同期的に処理しません同じセッションを共有している別のWebアプリを処理しているときにWebメソッド非同期Webアプリをブロック
しようとしていますASP.NETの識別に役立つperfmonカウンターボトルネック?ASP.Netのセッションを完全に置き換える
 
 
 

次のステップは、完全にカスタムセッションを作成することです。

これで、複数のプール(Webガーデン)を使用してサイトを実行する場合に役立つ場合がありますが、その前に、データを正しく同期し、Mutexおよびその他のロックメカニズムを使用してマルチプール環境で実行する必要があります。

于 2012-10-30T09:08:19.423 に答える