У меня есть сервер winsock IOCP, написанный на С++ с использованием соединений TCP IP. Я протестировал этот сервер локально, используя петлевой адрес с симулятором клиента. Мне удалось получить более 60 000 клиентов без труда. Проблема, с которой я сталкиваюсь, заключается в том, что я запускаю сервер у себя дома, а симулятор клиента в доме друзей. Все работает нормально до тех пор, пока мы не достигнем около 3700 подключений, после чего каждый вызов connect() завершается с ошибкой со стороны клиента с возвратом 10060 (это ошибка времени ожидания winsock). Прошлой ночью это число было 3700, но раньше было около 300, и мы также видели его около 1000. Но каким бы ни было число, каждый раз, когда мы пытаемся смоделировать его, оно будет терпеть неудачу примерно в пределах этого числа (в пределах 10 или около того). .
Оба компьютера используют Windows 7 Ultimate. Мы также изменили параметр реестра TCPIP MaxTcpConnections примерно до 16 миллионов. Мы также изменили настройку MaxUserPort с 5000 по умолчанию на 65k. Никакая полезная информация не отображается в средстве просмотра событий. Мы также оба наблюдали за нашим монитором ресурсов, и мы даже не достигли 1% использования сети, загрузка ЦП также близка к 0%.
Мы только что разговаривали по телефону с нашим интернет-провайдером, и они говорят, что никоим образом не ограничивают нас, но парень был немного не уверен и в итоге все равно повесил трубку после 30-минутного ожидания ...
Мы пытаемся сделать все, чтобы разобраться в этом вопросе, но не можем придумать решение. Я был бы очень признателен, если бы кто-то там мог помочь нам с этой проблемой.
P.S. Оба компьютера находятся на Verizon FIOS с таким же маршрутизатором Verizon. Следует также отметить, что сервер использует WSAAccept, а НЕ AcceptEx. Симулятор клиента пытается подключиться в течение многих секунд, поэтому я почти уверен, что подключения не задерживаются. Мы попытались изменить скорость, с которой подключается клиентский симулятор, и независимо от того, какую скорость он установил, он каждый раз терпит неудачу примерно с одним и тем же числом.
ОБНОВЛЕНИЕ Мы смоделировали 2 отдельных клиента (на 2 отдельных машинах) в сети A. Сервер работал в сети B. Каждый клиент смог подключить только половину (около 1600) подключений к серверу. Первоначально мы использовали порт ниже 1000, теперь он был изменен на более 50000. Журнал маршрутизатора на обеих машинах ничего не показал. Мы оба используем маршрутизатор FIOS verizon Actiontec MI424WR. Это наводит меня на мысль, что проблема не в клиентском коде. Сервер не выдает ошибок и не имеет неожиданного поведения. Может ли это быть проблемой провайдера/маршрутизатора?
UPDATE Решение найдено. Маршрутизатор Verizon, который мы использовали (MI424WR версии C), не может обрабатывать более 3700 подключений, мы протестировали его с отдельным набором сетей. Спасибо за помощь, ребята!
Спасибо - Рик