IIS で興味深い問題が発生しました。その原因を突き止めたいと思います。
長いポーリングを行うアプリがあります。私は独自のロングポーリングを実装しました。
リクエストが届きます。そのリクエストをブロックし、ワーカー スレッドから書き込みます。その後、すべてが終了します。私は合図します。そして、GET リクエストを処理していたスレッドは release です。
ここではスケーラビリティについて話しているわけではありません。それは私の関心事ではありません。テストのためだけに、同時取得リクエストのみを行います。したがって、実行中のスレッドは 2 つだけです。get リクエスト用に 1 つ、ワーカー スレッドに 1 つ。Request スレッドが安全に終了することはわかっています。Controller の Action が戻る直前に print を置きます。(それでいいの?)
私が遭遇するのはです。GET スレッドを終了しても、しばらくすると IIS の速度が低下します。
では、なぜ減速しているのでしょうか。AsyncController で実装すると、速度が低下しません。AsyncControllers がスレッドをプールにアタッチおよびデタッチすることを知っています。しかし、プールに 25 のスレッドがあり、ワーカー用にアクティブなスレッドが 1 つと、get のために出入りするスレッドが 1 つあるとします。私はちょっと迷っています。ありがとう