У меня есть 3 частных выделенных сервера в качестве балансировщика нагрузки. И еще есть знак IP Addr Public для этого частного выделенного сервера. Внезапно один из этих 3-х LB-серверов получил nf_conntrack: table full, dropping packet
Моя спецификация выделенного сервера - 32 ядра; 256 ГБ. Я прочитал немного nf_conntrack и, наконец, планирую увеличить conntrack_max примерно до 4 миллионов. Но мне нужно больше рекомендаций от всех, кто имеет опыт и эксперт в области производительности серверов.
Когда нам понадобится conntrack? Между тем, это выделенный сервер с частным IP, а не шлюз NAT. Стоит ли удалять conntrack?
Linux сетевой фильтр имеет несколько применений: межсетевой экран с отслеживанием состояния, NAT и обычное управление пакетами. Межсетевой экран с отслеживанием состояния, вероятно, будет существовать в готовых конфигурациях на не-маршрутизаторах, но это может быть что-то еще.
Поскольку брандмауэр на уровне хоста полезен, и было бы трудно полностью удалить conntrack, установите его надлежащим образом, чтобы этот предел не был достигнут.
Оцените общее количество потоков за 2 минуты. Регистрируйте подключения к приложениям, используйте Conntrack-Tools или захват пакета. Умножьте на некоторый коэффициент безопасности, чтобы получить необходимый порядок величины. 4 миллиона - большое число, но вполне вероятное. Каждый из них потребляет несколько сотен байт памяти, но 1 или 2 ГБ не имеют большого значения для коробки с парой сотен ГБ.
Помимо удаления нового значения для net.netfilter.nf_conntrack_max
в /etc/sysctl.d/
измените размер хэша nf_conntrack. Приблизительно conntrack max / 4, округлите до степени 2.
Для получения дополнительной информации, в том числе для старых ядер, см. RHEL KB 8721 ip_conntrack или nf_conntrack: таблица заполнена, пакет отбрасывается