Windows Server 2008 64ビットでは、ASP.NETアプリケーション(ASP.NETスレッドプール、同期要求処理を使用)が長時間実行されている場合(> 30分)、IIS7.0および.NET4.0。Webアプリケーションにはページがなく、主な目的は、巨大なファイル(> 1 GB)をチャンク(〜5 MB)で読み取り、それらをクライアントに転送することです。コード:
while (reading)
{
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.Flush();
}
単一のプロデューサー-単一のコンシューマーパターンが実装されているため、リクエストごとに2つのスレッドがあります。ここではタスクライブラリを使用していませんが、このシナリオで従来のスレッド作成よりも優れているかどうかをお知らせください。(.aspx)ページの代わりにHTTPハンドラー(.ashx)が使用されます。ストレステストでは、CPU使用率は問題ではありませんが、単一のワーカープロセスでは、210の同時クライアントの後、新しい接続でタイムアウトが発生します。私はセッション状態を使用しないので、これはWebガーデニングによって解決されます。私が見逃した大きな問題があるかどうかはわかりませんが、あなたの意見で他にどのような考慮事項をとるべきか教えてください。
たとえば、通常のASP.NETページは5分未満で処理されるため、IISは「接続タイムアウト」のために長時間実行されているTCP接続を閉じる可能性があるため、値を増やす必要があります。
私はあなたのアイデアに感謝します。