Есть хост-нода с KVM'ными виртуалками, в виртуалках развернуты окружения с почтовым сервером, которые занимаются массовой рассылкой почты.
Тут я буду описывать некоторые решенные проблемы в ходе работы с почтовиком.
1. В виртуалке с почтовиком подключено >1000 IP-адресов.
В нашем случае, после запуска виртуалки с >1000 адресов сеть поднималась очень долго (больше часа по времени).
В ходе расследования было выяснено, что это из-за проверки arping перед поднятием каждого алиаса для сетевого интерфейса.
Решение:
в виртуалке необходимо отключить проверку arping:
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
ARPCHECK="no"
# service network restart
2. При большом количестве коннектов к почтовому серверу, сильно начинает лагать хост-нода.
Первым делом нужно пойти в лог (на хост-ноде и в виртуалке) и посмотреть, что там можно найти:
# tail -f /var/log/messages
localhost kernel: net_ratelimit: 4618 callbacks suppressed
Лимиты можно посмотреть тут:
# cat /proc/sys/kernel/printk_ratelimit
5
# cat /proc/sys/kernel/printk_ratelimit_burst
10
Решение:
идея в том, чтобы снять эти лимиты, возможно это поможет снять нагрузку с хост-ноды:
# echo "net.core.message_cost=0" >> /etc/sysctl.conf
# sysctl -w net.core.message_cost=0
Команды следует выполнить как на хост-ноде, так и в виртуалке.
Также производительность сети может увеличиться путем эмуляции e1000 вместо дефолтного virtio.
3. Забивается arp таблица.
Решение:
# vim /etc/sysctl.conf
net.ipv4.neigh.default.gc_thresh1=2048
net.ipv4.neigh.default.gc_thresh2=4096
net.ipv4.neigh.default.gc_thresh3=8192