Всем привет! У меня вопрос касательно количества одновременно выполняемых запросов в Web API.
Имеется простая модель:
Код:
public class Response
{
public string userId { get; set; }
public string interval { get; set; }
}
Имеется простой Api-контроллер, в котором выполняется 10-секундная задержка, имитирующая какое-либо затратное по времени действие:
Код:
public class ValuesController : ApiController
{
public Response Get(string userId) { DateTime start = DateTime.Now; Thread.Sleep(TimeSpan.FromSeconds(10)); return new Response { userId = userId, interval = (DateTime.Now - start).ToString() }; }
}
Имеется страница Index.chtml, на которой при нажатии кнопки отправляется 30 запросов нашему контроллеру с интервалом 500 мс:
Код HTML:
<script src="../../Scripts/tests.js" type="text/javascript"></script>
<h2>Тестирование нагрузки на сервер</h2>
<br />
<input type="button" value="Начать" onclick="startLoad();" />
<br />
<table>
<tr>
<td>
<ul id="loadUl"></ul>
</td>
<td valign="top" align="left">
<ul id="response"></ul>
</td>
</tr>
</table>
Cкрипт tests.js, в котором реализован обработчик нажатия кнопки:
Код:
function startLoad() {
var i = 0;
var d = [];
$('#loadUl').html('');
$('#response').html('');
var intervalID = setInterval(function () {
d.push(new Date());
$('<li id="li' + i + '">UserId ' + i + '. Отправлен запрос...</li>').appendTo($('#loadUl'));
$.getJSON('../api/values?userid=' + i, function (data) {
var d1 = new Date();
var time = ((d1 - d[data.userId]) / 1000) + ' сек';
$('<li id="res' + data.userId + '">UserId ' + data.userId + '. Получен ответ. Время запроса: ' + data.interval + '. Факт. время ожидания: ' + time + '</li>').appendTo($('#response'));
});
i++;
if (i > 30) clearInterval(intervalID);
}, 500);
}
Данная страничка опубликована по адресу
http://testasync-ru.1gb.ru. Здесь вы можете наблюдать, что после нажатия кнопки через 10 сек начинают приходить ответы от сервера. И видно, что ответы приходят порциями по 6 штук. То есть сервер может выполнять одновременно только 6 запросов.
Вопрос: Почему так происходит? Как увеличить количество одновременно выполняемых запросов на сервере?