2012-03-25 5 views
2

私たちは、3つのエリア、Unity依存性注入、約20のルートを持つAsp.net MVC 3アプリケーションを持っています。ページをレンダリングする合計時間は非常に不変です。最大の問題は、コントローラ内でアクションメソッドを開始するのにかかる時間のようです。同じURLを表示している場合でも。アクションが100ミリ秒以内に開始されることもありますが、時には1秒よりも早く実行されることもあります。これは開発から生産までのすべての環境で発生します。Asp.net MVC 3コントローラーのパフォーマンスのトラブルシューティング

誰かが試してみるべき新鮮なものはありますか?

+0

ガベージコレクションの問題があるようです。私はそれを正確に修正する方法についてはあまりよく分かりませんが、私たちはそれに取り組んでいます。 – JustEngland

+0

JustEngland、同様の問題があります。 DIパフォーマンスの問題を修正できますか? – Prasad

+0

DIパフォーマンスの問題があるとは確信していません。しかし、多くの余分なオブジェクトが作成されるため、私たちのDI実装は疑わしいものです。私たちは、オブジェクトのライフサイクル管理をもっと実験しました。 http://stackoverflow.com/questions/1151201/singleton-per-call-context-web-request-in-unityまたは実際の問題は、ガベージコレクションが速くいっぱいであるということでした。私はこのブログを読むことをお勧めしますhttp://samsaffron.com/archive/2011/10/28/in-managed-code-we-trust-our-recent-battles-with-the-net-garbage-collector – JustEngland

答えて

0

チェックアウトMvcMiniProfiler

これにより、指定したアクションメソッドの一部をレンダリングするのにかかる時間を測定できます。

「行動方法の開始に要する時間」という意味が不明です。

おそらく、いくつかの不正なアクションフィルタが実行されていますか?

+0

開始要求イベントからコントローラアクションメソッドが起動するまでには、最大2秒かかります。私たちは、メモリ、CPU、またはIOのスパイクに気づいていません。 – JustEngland

+0

私はコントローラが起動する前に何が起こっているのか把握しようとしています。 – JustEngland

+0

あなたのDIコンテナが狂っていない限り、HTTPリクエスト - >ルーティング - >コントローラでなければなりません。それは悪いですか?あなたは何を期待していますか? – RPM1984

0

申し訳ありませんが、これはIDependencyResolverを実装することで大きなシングルトン(単一性)を持つ大きな問題です。私はあなたが記憶を漏らしていると確信しています。あなたのコメントを受けて

編集

そこまで発射本当にコントローラその間のは時間もないし、必要があるため、問題があるように、メモリリークやDIコンテナが私を襲った理由彼らはお互いに非常に接近しているため、アクションは発砲します。メモリリークであるかどうかをテストする簡単な方法は、アプリケーションを十分な時間(30分〜2時間)放置してから再訪しようとすることです。これが最初に速かった場合、メモリリークを示す可能性があります。最初のリクエストが遅い場合は、おそらくそれが別のものです。メモリリークが問題でない場合は、おそらくそれは簡単です。コントローラーが終了する前だと言って、ビューのレンダリングを除外しました(これには時間がかかることがあります)。あなたが言ったことは、あなたのweb.configファイルについて私に不思議に思います。 「これは開発から生産までのあらゆる環境で発生します。ご使用のプロダクション環境がまだdebug=trueの下で動作している可能性があります。これらは私が今考えているすべてのアイデアです。

+0

私はどんな種類のメモリスパイクも経験していません – JustEngland

+0

@JustEngland - アセットの保持、おそらく接続のようなメモリスパイクであるとは限りません。しかし、それが記憶の問題ではないと言うなら、私はあなたを信じています。他のいくつかの考えのために私の編集を参照してください。 –

+0

私たちは良い監視をしていて、メモリは問題ではないようです。メモリリークがないことを証明する別の方法がある場合、私はすべての耳です。 Web.configは本番環境ではdebug = falseに設定されています。 – JustEngland

関連する問題