Проблема с высокопроизводительным TCP-сервером C #: Невозможно установить соединение, поскольку целевая машина активно отказалась от него

Я разработал TCP-сервер в соответствии с вашими советами: Высокопроизводительный TCP-сервер на C #

Он основан на асинхронном шаблоне.

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

Когда я нагружаю свой сервер, я могу получить "System.Net.Sockets.SocketException" Не удалось установить соединение потому что целевая машина активно отказалась от нее "ошибка моего сервера, поэтому мне нужно повторно подключиться к нему. Если я протестирую его с 5000 одновременных подключений, мне придется снова попытаться подключиться из-за этой проблемы 10-20% подключений, если я протестируйте его с 10K одновременных подключений, это может быть 30-40%. Иногда это может быть - очень редко - больше, чем 50%. Кажется, что он не может обрабатывать приемы подключения: я устанавливаю новые подключения из своего стресс-теста так же интенсивно, как и мой тестовая машина может - около 120 соединений / сек.

Итак, что может вызвать такого рода исключение? Как с этим справиться? Что делать при реализации на стороне сервера, чтобы избежать этой проблемы? Как настроить прием TCP-соединения?

Заранее благодарим!

6
задан Community 23 May 2017 в 11:44
поделиться