nixp.ru v3.0

29 мая 2017,
понедельник,
08:53:53 MSK

DevOps с компанией «Флант»
Vourhey написал 29 мая 2008 года в 18:33 (2603 просмотра) Ведет себя как мужчина; открыл 4 темы в форуме, оставил 13 комментариев на сайте.

Добрый день.

Работаю на RedHat,(ядро 2.6.9). Есть несколко апликух (серверных), которые стоят на этой системе. Несколко дней все нормально работает. Потом клиентские проги уже не могу залогиниться на сервере. Все подключения на сервере переходят в статус SYN_RECV. Потом в CLOSE_WAIT. Собственно, ip_conntrack_log_invalid был установлен в 6, чтобы невалидные тсп-ишные соединения логировать. Тогда в /var/log/messages появляются строки такого вида:

kernel: printk: x message suppressed

где х — различные числа.

Насколько я понимаю, встроенный в ядро netfilter определяет исходящие пакеты как невалидные? Как можно получить большую инфу об этих пакетах? Хм…может эти логи пистаь функция send, если обнаруживает ошибку, например, в дескрипторе сокета. Потому что в логах серверной апликухи иногда проскакивает «Bad file descriptor"? Может, есть возможность узнать, какое приложение инициировало запись логов? Вообщем-то, если не трудно, поделитесь опытом, как еще можно выудить полезную инфу из этой ситуации.

metal
Vourhey
kernel: printk: x message suppressed

kernel — это и есть автор записи в логе.

Vourhey

Я это понимаю. Там и написано английским по белому :). Имеется ли возможность определить источник? Кто заставил «аффтара» написать это.

К сожалению, в интернете на эту тему нет инфы. Я нашел кучу описаний, как справиться с

printk: x message suppressed

Но. Везде, где это описано наряду с этой строкой выводятся еще строки, которые показывают дополнительную информацию. К примеру, там overflow какого-нибудь стека (это я образно), а потом, мол, message dropped и suppressed. Тогда без проблем. Меняем там нужный параметр и все пашет. Но в моем случае, вообще ни единой строчки инфы, кроме того, что сообщение подавлено. Вот в этом и суть.

metal

ipv6 попробуй отключить, если включен.

Vourhey

Нет, ничего не меняет.

Я тут немного в коде полазил. Странно. Это сообщение пишется с помощью вызова net_ratelimit (LOG_INVALID_PACKETS). Куча мест, где он(a) вызывается. Но везде после вызова стоит printk, который дописывает инфу, о причине. У меня же пусто…