Как получить запросы в секунду и задержку на запрос для запроса 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
Другие вопросы по тегам