Стресс-тест Winsock IOCP Server - PullRequest
       43

Стресс-тест Winsock IOCP Server

2 голосов
/ 30 августа 2011

У меня есть IOCP-сервер winsock, написанный на c ++ с использованием TCP-IP-соединений.Я проверил этот сервер локально, используя адрес обратной связи с симулятором клиента.Я смог получить более 60000 клиентов без пота.У меня возникает проблема, когда я запускаю сервер у себя дома и клиентский симулятор в доме друзей.Все работает до тех пор, пока мы не установим около 3700 подключений, после этого каждый вызов connect () не будет выполнен со стороны клиента с возвратом 10060 (это ошибка тайм-аута winsock).Прошлой ночью это число было 3700, но раньше оно было около 300, и мы также видели его около 1000. Но каким бы ни было это число, каждый раз, когда мы пытаемся смоделировать его, оно будет терпеть неудачу прямо около этого числа (в пределах 10 или около того).

Оба компьютера используют Windows 7 Ultimate.Мы также изменили параметр реестра TCPIP MaxTcpConnections примерно до 16 миллионов.Мы также изменили настройку MaxUserPort с 5000 по умолчанию на 65 КБ.Никакой полезной информации не отображается в окне просмотра событий.Мы также наблюдали за нашим монитором ресурсов, и мы даже не достигли 1% загрузки сети, процессор также близок к 0% использования.

Мы только что разговаривали с нашим провайдером, и онисказав, что они никоим образом не ограничивают нас, но парень был немного неуверен и все равно закончил тем, что повесил трубку после 30-минутного ожидания ...

Мы пытаемся сделать все, чтобы решить эту проблему, ноне может придумать решение.Я был бы очень признателен, если бы кто-то мог помочь нам с этой проблемой.

PS Оба компьютера работают на Verizon FIOS с одним и тем же маршрутизатором verizon.Стоит отметить, что сервер использует WSAAccept, а НЕ AcceptEx.Клиентский симулятор пытается установить соединение в течение многих секунд, поэтому я почти уверен, что соединения не засоряются.Мы попытались изменить скорость, с которой подключается клиентский симулятор, и независимо от того, на какую скорость он настроен, каждый раз происходит сбой вокруг одного и того же числа.) в сети A. Сервер работал в сети B. Каждый клиент смог подключить к серверу только половину (около 1600).Первоначально мы использовали порт ниже 1000, это было изменено на более 50 000.Лог роутера на обеих машинах ничего не показал.Мы оба используем маршрутизатор Actiontec MI424WR verizon FIOS.Это приводит меня к мысли, что проблема не в клиентском коде.Сервер не выдает ошибок и не имеет неожиданного поведения.Может ли это быть проблемой ISP / Router?

ОБНОВЛЕНИЕ Решение найдено.Маршрутизатор Verizon, который мы использовали (MI424WR revision C), не может обрабатывать более 3700 соединений, мы проверили это с отдельным набором сетей.Спасибо за помощь, ребята!

Спасибо - Рик

1 Ответ

0 голосов
/ 31 августа 2011

Я бы догадался, что это проблема MaxUserPort, но вы говорите, что изменили это. Вы перезагружались после его изменения?

Запустите тест на тех же компьютерах в вашей локальной сети (это выведет компьютеры из уравнения).

Возможно, проблема в том, что один из ваших маршрутизаторов не работает?

...