Как получить запросы в секунду и задержку на запрос для запроса UDP
У меня есть HTTP Api-сервер, который запрашивает UDP-сервер. я использовал wrk
чтобы проверить запросы в секунду для HTTP-сервера Api, и теперь я хочу проверить запросы UDP-сервера в секунду и задержку на запрос. Я хотел бы иметь возможность устанавливать количество потоков и соединений так же, как это делает 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
Но это в секундах для системы и мне нужны миллисекунды
1 ответ
Для генерации трафика и бенчмаркинга "wrk" и "ab" (apachebench) работают только для запросов TCP HTTP. Для генерации UDP-трафика вам нужно написать собственный код. (Например, см. http://1wt.eu/tools/udp-test/)
Если вы хотите время, лучше использовать специальную утилиту захвата трафика, такую как tcpdump, tshark или wireshark, или написать свой собственный код с помощью 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