![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
pasha1 |
|
||||||||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 15.5.2013 Репутация: нет Всего: нет |
Добрый день!) Столкнулся со следующей проблемой, при одновременно посылке 100 запросов сервер начинает тормозить принятия нового запроса первые 100 запросов запускают функцию которая выполняется 1 минуту и ждут окончание выполнение, 101 запросом я посылаю с браузера вызов краткой функции которая выводит строку и количество сколько запросов еще работает паралельно.
так вот после того как все 100 запросов принялись и работают в потоке, то 101 функция выполняется быстро и показывает что 100 потоков сейчас паралельно работают. Затык именно в приеме запросов, просмотрел очень много информации в интернете, все вроде делаю как надо но все равно результата нет использую NF 4.5 атрибуты класса установлены в паралельную работу Код C#
функция емуляции нагрузки на 1 минуту Код C#
функция проверки статистики Код C#
serviceThrottling установлен очень высокий Код C#
Надеюсь кто встречался с такой проблемой и подскажет в чем беда или хоть даст советы куда еще можно копать. |
||||||||
|
|||||||||
pasha1 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 15.5.2013 Репутация: нет Всего: нет |
я не учел еще одного фактора это пул потоков ввода-вывода
по умолчанию минимальный пул равен количеству ядер процесора, например у меня он был равен 4 максимальное значение было 1023, но почему же тогда возникали проблемы когда я пытался сделать 100 потоков??? ответ в том что когда мы переходим за минимальный порог, сервер не сразу выделяет новый поток, а ждет около 0,5 секунды что освободится один из занятых, и только после этого если свободного таки не нашлось выделяет новый поток.. теперь взяв во внимания что я делаю 100 подключений которые нужно держать, то первые 4 принимаются на обработку мгновенно, остальные 96 занимают приблизительно 96 * 0,5 сек = 48 секунд, то есть следующий 101 мой проверочный вызов ждет 48 секунд!!!. Это плохо, но это сделано не просто так, именно такое значение минимального пула обеспечивает хорошую стабильность, и чтобы начинающий программист не боролся сразу с демонами ему обеспечивают такие условия... решение: ThreadPool.SetMinThreads(4, 100); я уверен что мой ответ и мой труд будет кому то полезен, и не дать убить уйму времени ![]() полезные ссылки: http://blogs.msdn.com/b/wenlong/archive/20...15-seconds.aspx http://msdn.microsoft.com/ru-ru/library/sy...minthreads.aspx http://stackoverflow.com/questions/7710220...and-scalability Это сообщение отредактировал(а) pasha1 - 16.5.2013, 14:06 |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |