Назад | Перейти на главную страницу

Как получить количество запросов в секунду и задержку на запрос для UDP-запроса

У меня есть HTTP-сервер Api, который запрашивает UDP-сервер. я использовал wrk чтобы протестировать количество запросов в секунду для HTTP Api Server, и теперь я хочу проверить количество запросов UDP Server в секунду и задержку на запрос. Я хотел бы иметь возможность устанавливать количество потоков и соединений, как это делает wrk.

Для wrk я сделал следующее:

wrk -t30 -c100 -d30s http://localhost:8083/queryArgument

который запрашивает сервер API, а затем внутри кода запрашивает UDP.

Я хочу запросить только UDP-сервер, не заходя через API-сервер.

Для примера, предоставленного человеком, создавшим UDP-сервер, нам нужно выполнить следующую команду:

echo -n "queryArgument" | nc -u -w4 127.0.0.1 1175

Я не знаю, как превратить это во что-то, что я могу передать wrk

Любая помощь будет принята с благодарностью.

Конечная цель - увидеть статистику запросов UDP.

ОБНОВИТЬ

Я смог запросить netcat так:

time yes|nc -v -u -z -w 3 127.0.0.1 1175

Но это в секундах для sys, и мне нужны миллисекунды

Для генерации трафика и тестирования производительности «wrk» и «ab» (apachebench) работают только для запросов TCP HTTP. Чтобы сгенерировать трафик UDP, вам нужно будет написать собственный код. (Например, см. http://1wt.eu/tools/udp-test/)

Если вам нужны тайминги, вероятно, лучше всего использовать специальную утилиту захвата трафика, такую ​​как tcpdump, tshark или wirehark, или написать свой собственный код с помощью libcap или libtins. (Например. https://github.com/pollere/pping)

Если вам просто нужны счетчики и пропускная способность, вы можете использовать iptables (или, если вы используете новейший сервер, nftables, который имеет другой командный интерфейс)

 iptables -t mangle -I INPUT -p udp --sport 1175
 iptables -t mangle -I INPUT -p udp --dport 1175

Это создает записи брандмауэра, которые ничего не делают, кроме подсчета пакетов, приходящих и исходящих от порта 1175 на локальном хосте. Затем вы можете просмотреть счетчики:

 iptables -nvxL -t mangle 

Это даст вам количество пакетов и байтов.

Если вы хотите ограничить его петлей и 127.0.0.1 и дать ему уникальную строку комментария, чтобы вы могли удалить ее снова, когда закончите:

 iptables -t mangle -I INPUT -p udp --sport 1175 -i lo -s 127.0.0.1 -m comment --comment watch
 iptables -t mangle -I INPUT -p udp --dport 1175 -i lo -d 127.0.0.1 -m comment --comment watch

Когда ваш трафик перемещается на другой хост, вам нужно будет переместить правила во второе правило в цепочке OUTPUT. Или, если вы можете отслеживать этот трафик на своем маршрутизаторе, межсетевом экране или другом промежуточном хосте, вы можете поместить оба правила в цепочку FORWARD.

Вы можете сделать все вышеперечисленное с помощью системных вызовов libiptc или, конечно, создать свой собственный любимый языковой интерфейс, если хотите. Есть и другие варианты, такие как rfw, ufw и другие. Однако большинство утилит, похоже, общаются с брандмауэром через iptables.

В случае сомнений проконсультируйтесь:

 man iptables