Содержание
TC команда Linux, с помощью которой вы можете управлять настройками управления трафиком
В Linux TC command используется для Show or Manipulate traffic control settings ,
Почему вам нужно добавить небольшую задержку на конкретный сайт? Подумайте об этом сценарии:
- На производственном сайте вы получаете некоторые исключения TimeoutException, и во время этого исключения ваше приложение работает ненормально.
- Есть некоторые другие потоки, которые могут генерировать неправильные данные или пустые данные в случае TimeoutException.
- Теперь, если вы хотите отладить ваше приложение, то абсолютно невозможно связываться с производственной средой, пока вы не найдете решение.
- В этом случае вы можете использовать свою локальную среду или среду разработки для тестирования.
- В локальной среде вы можете запустить свое Java-приложение, и после его успешного запуска вы можете использовать
TC commandгенерировать задержку и в конечном итоге TimeoutException.
У вас есть ниже вопросы?
Тогда вы в нужном месте
- Как смоделировать задержку для определенного IP через определенный порт?
- Задержка сетевого трафика на определенный IP
- linux — симулирует сетевую задержку на конкретном порту, используя tc
- tc: добавление смоделированного
network latencyна ваш сервер Linux - Как убрать задержку tc?
- задержка netem для конкретного ip и порта
Вот команда TC
Просто поместите ниже всех строк в файл crunchify_tc_command.sh ,
|
1
2
3
4
5
6
7
|
#! / bin / Баш
tc qdisc del dev eth0 root
tc qdisc add dev eth0 корневой дескриптор 1 : ПРИО
tc qdisc add dev eth0 parent 1 : 3 справиться 30 : показатель TBF 20kbit буфер 1600 предел 3000
tc qdisc add dev eth0 parent 30 : 1 справиться 31 : задержка netem 30000ms 10мс распределение нормальное
tc filter добавить протокол dev eth0 ip parent 1 : 0 ПРИО 3 U32 соответствует IP DST 172.217.4.174 / 32 flowid 1 : 3
|
- 1-я строка: будет
deleteкореньqdisc, он будет заменен наpfifo_fastодин . - 2-я строка: заменит pdifo_fast qdisc на
prioодин. По умолчанию очередь prio имеет 3 полосы (0, 1, 2). - 4-я строка: эмуляция сети (
netem) предоставляет строительные блоки для создания узла обесценения. - 5-я ссылка: будет соответствовать конкретному IP-адресу (172.217.4.174) и будет вводить задержку
30000 milliseconds,
Вот 172.217.4.174 это IP-адрес google.com в моем случае. Просто keep adding last line с разными IP address если у вас более одного IP-адреса.
Как проверить, работает команда TC или нет?
Некоторое время назад я написал Java-программу для генерации TimeoutException вручную в Java . Вы можете использовать ту же программу.
Вот шаги:
- Измените readTimeout на 5000 миллисекунд
- Поиск линии
connection.setReadTimeout(10);и измените значение с 10 на 5000connection.setReadTimeout(5000);
- Поиск линии
- Запустите программу
- Вы больше не должны видеть socketTimeoutError , это означает, что вы получаете результат от google.com
- Следующие шаги — выполнить команду crunchify_tc_command.sh
- Баш-3,2 $
sh crunchify_tc_command.sh
- Баш-3,2 $
- Как вы видите в приведенном выше скрипте , мы добавили задержку соединения до 30 секунд
- Так как в Java-программе у нас есть 5-секундный тайм-аут , ваша программа начнет сбой с
java.net.SocketTimeoutException: Read timed outошибка.
Как отменить эффект команды TC?
Просто используйте команду ниже, чтобы отменить изменения файла сценария оболочки .
|
1
|
tc qdisc del dev eth0 root
|
Надеюсь, что этот трюк работает хорошо для вас, если вы хотите сгенерировать задержку подключения к любому IP-адресу для вашего проекта.
0.00 (0%) 0 votes





