Вопрос

Я написал реализацию TCP-сервера, с помощью которой создал приложение, работающее как эхо-служба TCP.

Теперь я хочу протестировать этот эхо-сервер с точки зрения

  • Сколько соединений он может обработать
  • Каково время ответа
  • Сколько памяти и процессора он использует

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

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

Я написал эту реализацию, используя C# и .NET 3.5, хотя считаю, что это не имеет значения применительно к вопросу.

Это было полезно?

Решение

У меня есть бесплатный инструмент, который может вам помочь.Я использую его для тестирования серверов, созданных с использованием моей серверной платформы C++.Инструмент доступен здесь: http://www.lenholgate.com/blog/2005/11/windows-tcpip-server- Performance.html.Он позволяет вам создавать настраиваемое количество подключений к вашему целевому серверу с настраиваемой скоростью, а затем отправлять данные при каждом соединении (опять же с настраиваемой скоростью).

Если вы обнаружите, что лучший способ использовать его - запустить его на машине, отличной от сервера (я знаю, довольно очевидно, но...) и, возможно, запустить несколько копий на нескольких разных машинах.Обратите внимание: если вы обнаружите, что не можете установить более 4000 подключений, вполне вероятно, что вам нужно настроить MAX_USER_PORT параметр реестра на компьютере, на котором работает клиент.

Протестировав свой TCP-код, вы можете обнаружить, что вам необходимо протестировать протокол, который поддерживает ваш сервер.Я написал инструмент тестирования для подобных ситуаций на C#, который доступен на CodeProject (http://www.codeproject.com/KB/IP/testingsocketservers.aspx).Это позволяет вам написать «плагин» для поддержки вашего протокола и обрабатывать независимые от протокола вещи (множество соединений, разбиение сообщений так, чтобы вы получали фрагментированные чтения и т. д.).Проект представляет собой довольно неприятный дизайн с потоком на соединение, и для большего количества соединений лучше переопределить что-то, используя асинхронный дизайн, но у меня есть для этого инструменты C++, поэтому я так и не удосужился изменить эту тестовую программу. .

Другие советы

В вашей ситуации раньше я использовал FunkLoad.Если вы можете написать небольшой клиент как фрагмент кода Python, то FunkLoad запустит на сервере столько клиентов, сколько вы захотите, и построите график результатов:

https://funkload.nuxeo.org/

Полностью проработанный пример для серии тестовых серверов является центральным элементом второго издания моей книги «Основы сетевого программирования на Python» на случай, если его общедоступный репозиторий исходного кода окажет какую-либо помощь:

https://github.com/brandon-rhodes/fopnp/tree/m/py2/chapter07

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top