Назад | Перейти на главную страницу

Как устранить ошибку «ядро: nf_conntrack: таблица заполнена, пакет отбрасывается»

Недавно у нас возникла проблема с тем, что один из наших серверов (Debian Squeeze) перестал отвечать во время большой нагрузки. Глядя на журналы ядра, я думаю, что это причина:

kernel: nf_conntrack: table full, dropping packet

Насколько я понимаю, это модуль conntrack, который выполняет отслеживание соединения с отслеживанием состояния, сообщая, что таблица, используемая для хранения деталей соединения, заполнена.

Судя по проведенным мною исследованиям, есть два способа смягчить это:

  1. Увеличьте размер таблицы.

  2. Полностью удалить модуль из системы.

Однако ни /proc/sys/net/ipv4/ip_conntrack_maxни /proc/sys/net/ipv4/netfilter/ip_conntrack_max существуют на этой машине (нет ipv4 каталог под net).

Если я сделаю lsmod Я не получаю результатов.

Итак, я немного запутался - может, кто-нибудь прояснит мне ситуацию?

Спасибо

Это из опыта - я не проводил исследований, чтобы проверить эту информацию: я видел несколько систем, в которых такая же ошибка присутствует в системных журналах. и ничего нет в / proc / sys / net / ipv4 / ip_conn * или / proc / sys / net / ipv4 / netfilter. Я также хотел бы знать, почему - но это не останется очень важным, если вы найдете решение для первоначальных симптомов. ;)

Стратегия смягчения последствий была двоякой: увеличение лимита с помощью sysctl (наивный краткосрочный подход) и выяснение того, почему количество отслеживаемых соединений так велико.

Если пределы по умолчанию превышаются и рассматриваемый сервер не предназначен для обработки большого количества подключений, то разумно, что ограничения вообще не должны нарушаться. Хорошим примером службы, которая будет иметь высокие требования к отслеживанию соединений, является «общедоступный» DNS-сервер, обслуживающий более ста тысяч клиентов.

Чтобы избежать этого, необходимо изучить журналы, убедиться, что приняты меры защиты от DOS / DDOS (например, см. Fail2ban), и убедиться, что у вас установлена ​​разумная конфигурация межсетевого экрана.

Что касается lsmod, я не сталкивался с ситуацией, когда он выглядел бы активным, но модуль не указан. Я не знаю, как возникает такая ситуация.

Настройки для conntrack часто находятся в / proc / sys / net / netfilter / nf_conntrack_max.