Недавно заметил задержки в хождении пакетов. А ifconfig выдавал
viifv1064: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::fc16:3eff:fe4d:b2ea prefixlen 64 scopeid 0x20<link>
ether fe:16:3e:4d:b2:ea txqueuelen 1000 (Ethernet)
RX packets 12913913 bytes 1397700520 (1.3 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 441260430 bytes 47988237591 (44.6 GiB)
TX errors 0 dropped 150343 overruns 0 carrier 0 collisions 0
Как видим, имеются dropped packets. RX — входящий пакет, тут ошибок нет. TX — исходящий пакет, дропается до выхода из сервера. Общие логи ничего не показали, никаких ошибок.
Как узнать причину?
dropwatch! см. https://github.com/nhorman/dropwatch
сам rpm пакет есть в epel, если у вас не подлючен то подключаем
dnf config-manager --set-enabled crb
dnf install epel-release
И установим dropwatch
dnf install dropwatch
Теперь можно запустить и вводим «start»
dropwatch -l kas
Получаем вот такое:
dropwatch> start
Enabling monitoring...
Kernel monitoring activated.
Issue Ctrl-C to stop monitoring
24 drops at __init_scratch_end+34906987 (0xffffffffc0706987)
4 drops at ip_rcv_finish+212 (0xffffffff880dcd92)
1 drops at ip6_mc_input+236 (0xffffffff88172e86)
1 drops at nf_hook_slow+b4 (0xffffffff880cfd84)
1 drops at skb_release_data+b9 (0xffffffff88021c29)
10420 drops at __init_scratch_end+34906987 (0xffffffffc0706987)
Что оставить, нажмите ctr+c. Как видим, больше потерь у нас от
10420 drops at __init_scratch_end+34906987 (0xffffffffc0706987)
Теперь необходимо понять что это. Для этого установить debug ядра
debuginfo-install kernel
dnf install elfutils
Ну и выполним команду
eu-addr2line -f -k 0xffffffffc0706987
Мы получим что-то типа такого
ip_rcv_finish
/usr/src/debug/kernel-4.18.0-513.18.1.el8_9/linux-4.18.0-513.18.1.el8_9.x86_64/net/ipv4/ip_input.c:411:9
С этой информацией уже можем крутить нужные лимиты ядра.