質問: 私はちょっとしたサービスファブリックアプリケーションを構築しています。サービスファブリックに変換してから、起動時間が遅くなってしまいました。リリースの後だけでなく、10〜15分の非アクティブの後もそうです。 私は、各サービスに行き、10秒ごとに小さなdb要求を出し、アプリケーションとefを実行し続けることを考えているプロジェクトを追加しました。これは私がタイムアウトを得るのを助け、最初の要求は5-15秒の範囲にあります。ウォーミングアップ後、要求は通常300msの範囲にあるので、非常に簡単な要求であり、サービス間の通信はあまりありません(合計4つのサービス)。 多くの検索の後、私は、ほとんどの場合、ビジュアルスタジオのものが気に入らないように見えるプロファイラを見つけました。残念なことに、スレッドをたくさん待っていて、それが自分のコードに含まれていないように見えることを除けば、それほど大したことはありませんでした。私の外部リクエストはすべて非同期で待機します。また、リクエストに続いて、情報が欠落しているように思えました... 最初は私は遅れが検索クエリを生成することから来るかもしれないと思ったので、私はその部分を代わりに使用して(完全な要求はまだいくつかのefを使用しています)、しかしそれは本当に何も変更しませんでした。 アプリケーションには、最新のサービスファブリック、dotnetコア、efコア、アプリケーションのインサイトパッケージがすべて含まれています。トークンを検証するものを除くすべてのサービスはステートレスです。もちろん、リリースモードで構築されています。 この時点で私はちょっと遅れている理由を見つけることができないので、ちょっと迷っています。昔は、これは通常、IISがアプリケーションをシャットダウンしたり、リサイクルしていたためでしたが、今はそこにないときには何ができますか?
回答: あなたのサービスは、サービスファブリックのリモーティングオプションを使用して通信しているのか、HTTPを使って通信していますか? HTTPの場合、Hibernationとウォームアップ時間はHttpSys / Kestrelによって引き起こされる可能性がありますか? 少し遅れているような低速応答(300ms)に関しては、バックエンドにEFを含む複数のステートレスサービス(HTTPとKestrelを使用)があり、応答時間が50ms以下です。