У меня есть 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