Здравствуйте! У меня на FreeBSD для подсчета трафика исполуется ipacctd
Трафик через канал около 4 гигабайт в сутки со средней скоростью около 100 килобайт в секунду и максимальной - до мегабайта.
Очень много одновременных соединений на разные адреса (работают файлообменные системы у юзеров).
ipacctd почему-то ругается следующим образом
Jan 20 14:48:23 ftp ipacctd[493]: (port 10000) send: No buffer space available
Jan 20 14:48:49 ftp last message repeated 79 times
Jan 20 14:49:23 ftp last message repeated 68 times
Jan 20 14:49:23 ftp ipacctd[493]: (port 10000) send: No buffer space available
Jan 20 14:49:54 ftp last message repeated 331 times
Jan 20 14:50:21 ftp last message repeated 171 times
Jan 20 14:50:33 ftp ipacctd[493]: (port 10000) send: No buffer space available
Jan 20 14:51:05 ftp last message repeated 178 times
Jan 20 14:51:19 ftp last message repeated 46 times
И так далее. При этом он не вылетает, а продолжает работать. Причем я не могу понять, на какой буфер он ругается.
Указанного в конфигурации буфера вполне должно хватать для смягчения всех скачков скорости (которых почти нет).
Ранее я указал размер буфера равный размеру kern.ipc.maxsockbuf который у меня равен 4194304 ошибка не изчезла.
Тогда подумал, что он ругается именно на то, что размер буфера указан слишком большим и он его не может создать, и убрал эту опцию. То есть стал использоваться размер буфера по умолчанию -ошибка та же.
_____________________
Есть ещё одна проблема. Он почему-то в лог при большой нагрузке (много соединий) пишет некоторые строчки с ошибками. Не дописывает их до конца (заканчивая где-то перед трафиком по направлению и следующую строку пишет без переноса строки вплотную), из за чего сбоит биллинг.
Я думал, что ему не хватает памяти для хранения записей. Согласно описанию использовал опцию -m (максимальное кол-во хранящихся записей).
Причём в описании не написано максимальное значение этой опции.
Увеличение до нескольких миллионов ничего не дало. Я подумал, что число 16-ти битное и поставил его в максимальное значение (а вдруг оно ещё и знаковое? но тогда какой смысл указывать 32535, если и так по умолчанию стоит 30000 записей). Ни к чему особо это не привело.
Я снижал периодичность сброса данных с 1 часа вплоть до 5 минут (по мере возрастания нагрузки - когда включали "ослов" - самая ужасная вещь для подсчитывающей системы), это помогло. Но не до конца. Ошибки всё равно остались!
Сейчас процесс запускается с такими опциями:
ipacctd -m 65535 -v -w -p 10000
Может быть кто-нибудь знает, как его настроить, чтобы ошибок, а главное выпадений не было! Ещё неизвестно, сколько трафика он не подсчитвает.
Раньше пробовал использовать netacct, но он вообще глючил по страшному. Не засчитывал трафик. ipacctd мне очень нравится в том числе и по способу использования (через divert).