В 64-битном Windows Server 2008, IIS 7.0 и .NET 4.0, если приложение ASP.NET (с использованием пула потоков ASP.NET, синхронная обработка запросов) работает долго (> 30 минут). Веб-приложение не имеет страницы, и основная цель - это чтение огромных файлов (> 1 ГБ) порциями (~ 5 МБ) и передача их клиентам. Код:
while (reading)
{
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.Flush();
}
Один производитель - реализован шаблон с одним потребителем, поэтому для каждого запроса есть два потока. Я не использую библиотеку задач здесь, но, пожалуйста, дайте мне знать, если она имеет преимущество перед традиционным созданием потоков в этом сценарии. Обработчик HTTP (.ashx) используется вместо страницы (.aspx). В условиях стресс-теста загрузка ЦП не является проблемой, но с одним рабочим процессом, после 210 одновременных клиентов, новые соединения обнаруживают тайм-аут. Это решается веб-садоводством, так как я не использую состояние сеанса. Я не уверен, есть ли какая-то большая проблема, которую я пропустил, но, пожалуйста, дайте мне знать, какие другие соображения следует принять, по вашему мнению?
например, возможно, IIS закрывает долго работающие TCP-соединения из-за «тайм-аута соединения», поскольку обычные страницы ASP.NET обрабатываются менее чем за 5 минут, поэтому я должен увеличить значение.
Я ценю ваши идеи.