У меня есть страница ASP.NET с этим псевдокодом:
while (read)
{
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.Flush();
}
Любой клиент, запрашивающий эту страницу, начнет загружать двоичный файл. На данный момент все в порядке, но у клиентов не было ограничений по скорости загрузки, поэтому изменил приведенный выше код на следующий:
while (read)
{
Response.OutputStream.Write(buffer, 0, buffer.Length);
Response.Flush();
Thread.Sleep(500);
}
Проблема скорости решена, но тестируется со 100 одновременными клиентами, которые подключаются друг к другу (задержка в 3 секунды между каждым новым connection) загрузка ЦП увеличивается, когда количество клиентов увеличивается, а когда одновременно работает 70 ~ 80 клиентов, ЦП достигает 100%, и любое новое соединение отклоняется. На других машинах номера могут отличаться, но вопрос в том, почему Thread. Sleep () так интенсивно загружает процессор, и есть ли способ ускорить работу клиента без повышения производительности процессора?
Я могу сделать это на уровне IIS, но мне нужно больше контроля изнутри моего приложения.