Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > ASP.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2013, 13:26   #1
Alexxx5800
 
Регистрация: 08.10.2010
Сообщений: 4
По умолчанию ASP.NET Web API, количество одновременных запросов

Всем привет! У меня вопрос касательно количества одновременно выполняемых запросов в 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 запросов.

Вопрос: Почему так происходит? Как увеличить количество одновременно выполняемых запросов на сервере?
Alexxx5800 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск