0

特定の応答時間 (1 分未満) を必要とする WCF サービスがあります。

私の問題は、時々、ほとんどの場合、朝にサービスが応答するのに長い時間がかかることです (2 分以上かかることもあります)。

これは、アプリがリサイクルされ、最初の実行で再コンパイルする必要があるためだと思います。

これが発生する可能性のある他の理由はありますか?

アプリのリサイクルをオフにすることはできますか? もしそうなら、それは何らかの副作用や不安定性を引き起こしますか? asp.net アプリがリサイクルするように設定されている理由があるに違いないと思います。

最初の実行のパフォーマンスを向上させるために他にできることはありますか?

4

4 に答える 4

2

はい、AppPool のリサイクルを防ぐことができます。もう 1 つのオプションは、キープアライブ ジョブを作成してサービスに継続的に ping を実行し、ワーカー プロセスがスリープ状態にならないようにすることです。

于 2009-04-17T18:43:36.033 に答える
1

基本的に、アプリケーションがいつリサイクルまたはアンロードされるかは、次の規則によって決まります。

  1. アプリプールのリサイクル時間に達した後-デフォルトでは、これは29時間ごとだと思います。
  2. アプリケーションへの最後のリクエストから設定された時間。

キープアライブを使用してサービスに ping を実行すると 2 が解決され、その後は 1 に対処するだけで済みます。

IIS のバージョンに応じて、これを構成する方法が若干異なります。

  1. IIS 6 の場合
  2. IIS 7 の場合

アイドル タイムアウトは通常、デフォルトで「無限」になると思いますが、構成ファイルのprocessModel 要素 (idleTimeout 属性)で構成できます。

最初の実行時のパフォーマンスについては、アプリを見ずに言うのは難しいですが、DotTraceや別のプロファイラーなどを実行しましたか?

その最初のロードで、大量の集中的なルックアップとデータのキャッシュを行っていますか? これらは延期できますか?

于 2009-04-17T20:52:16.643 に答える
0

ばかげた考えかもしれませんが、たとえば朝の午前 5 時 30 分にコンソール アプリがサービスにアクセスするようにスケジュールして、このリクエストの実行に時間がかかり、その後に来る通常のユーザーがその問題を抱えないようにすることはできますか? ?

確かに - 根本的な原因を扱っているわけではありませんが、当分の間、それは有用な回避策になるかもしれません - いいえ?

マルク

于 2009-04-17T20:30:32.517 に答える
0

パフォーマンスの問題は、最初に除外しなかったことが原因で発生する可能性があります。何も除外していないので、何かが原因である可能性があります.

于 2009-04-17T18:44:51.800 に答える