LINUX.ORG.RU
ФорумAdmin

Bind statistics-channels TotalUse

 , ,


0

2

Наткнулся на интересный баг. Может кто подтвердить?

Соль в следующем. У меня настроен bind с statistics-channels reporting (выплёвывает xml/json, который скармливается collectd).

И вот на графике видно вот такую фигню. В общем bind рапортует, что использует over9000 гигабайтов рамы, но при этом RSS/VSZ всё в рамках приличия (~75M).

Заглянул в выхлоп statistics-channels — и в самом деле рапортует так. Т.е. это не проблема collectd.

Проблема эта появилась с предпоследним апдейтом (9.10.2-P4 → 9.10.3-P3). Два спада на графике — это ребуты.

Такое впечатление, что счётчик TotalUse просто складывает всю использованую память с момента старта. Т.е. толи free больше на обрабатывается, толи что-то намутили с подсчётом. На работе самого named это никак не отражается.

В общем, прежде чем репортить баг, хотелось бы иметь подтверждение.

Включить и проверить у себя можно так:

Добавить в named.conf:

statistics-channels {
        inet 127.0.0.1 port 8053;
};

И

curl http://localhost:8053/json/v1/mem | grep TotalUse

PS: OpenBSD/5.9 isc-bind-9.10.3pl3

★★★★★

Последнее исправление: beastie (всего исправлений: 1)

Ответ на: комментарий от anc

Значит у тебя не собрано с libjson.

Альтернативно:

Проверь с named -V

BIND 9.10.3-P3 <id:bdaecad>
built by make with '--enable-shared' '--enable-filter-aaaa' '--enable-threads' '--with-libtool' '--without-readline' '--with-python=/usr/local/bin/python2.7' '--prefix=/usr/local' '--sysconfdir=/etc' '--mandir=/usr/local/man' '--infodir=/usr/local/info' '--localstatedir=/var' '--disable-silent-rules' '--disable-gtk-doc' 'CC=cc' 'CFLAGS=-O2 -pipe'
compiled by GCC 4.2.1 20070719 
compiled with OpenSSL version: LibreSSL 2.3.2
linked to OpenSSL version: LibreSSL 2.3.2
compiled with libxml2 version: 2.9.3
linked to libxml2 version: 20903
compiled with libjson-c version: 0.12
linked to libjson-c version: 0.12

beastie ★★★★★
() автор топика
Ответ на: комментарий от anc

В xml оно тоже есть, но грепить его чуть сложнее (он идёт одной большой портянкой):

curl http://localhost:8053/ | xmllint --format - | grep TotalUse

Вот что у меня:

      <TotalUse>9904758575</TotalUse>
Почти 10G, Карл! ;)

При этом:

USER       PID %CPU %MEM   VSZ   RSS TT  STAT  STARTED       TIME COMMAND
_bind    30447  8.4  3.7 72752 76636 ??  Is     4Apr16  4923:12.20 /usr/local/sbin/named -t /var/named -u _bind -U 4
реально занятно каких-то 75M.

PS: у меня оно растёт примерно 10G в месяц. Т.ч. на свеже-запущеном bind бутет скорей всего ещё не заметно.

beastie ★★★★★
() автор топика
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от beastie

Уже пересобрал с libjson :) Похоже вы правы. У меня тестовая голая slackware current (не помню точно когда качал ее, но не очень давно, версия бинда как раз совпала) однако выхлоп TotalUse постоянно увеличивается.

    "TotalUse":16777232,
    "TotalUse":16778536,
    "TotalUse":16779840,
    "TotalUse":16781144,
    "TotalUse":16782448,
    "TotalUse":16783752,
    "TotalUse":16785056,
    "TotalUse":16786360,
    "TotalUse":16787664,
    "TotalUse":16788968,
    "TotalUse":16790272,
    "TotalUse":16791576,
    "TotalUse":16792880,
    "TotalUse":16794184,
    "TotalUse":16795488,
    "TotalUse":16796792,
    "TotalUse":16798096,
    "TotalUse":16799400,
    "TotalUse":16800704,
    "TotalUse":16802008,
    "TotalUse":16803312,
    "TotalUse":16804616,
    "TotalUse":16805920,
А начиналось с
    "TotalUse":7225467,
    "TotalUse":7226771,
    "TotalUse":7228075,
    "TotalUse":7229379,
    "TotalUse":7230683,
    "TotalUse":7231987,
    "TotalUse":7233291,
    "TotalUse":7234595,
    "TotalUse":7235899,
    "TotalUse":7237203,
    "TotalUse":7238507,
    "TotalUse":7239811,
    "TotalUse":7241115,
    "TotalUse":7242419,
    "TotalUse":7243723,
    "TotalUse":7245027,
    "TotalUse":7246331,
    "TotalUse":7247635,
    "TotalUse":7248939,
    "TotalUse":7250243,
    "TotalUse":7251547,
    "TotalUse":7252851,
    "TotalUse":7254155,

Версия
BIND 9.10.3-P3 <id:bdaecad>
built by make with '--prefix=/usr' '--libdir=/usr/lib64' '--sysconfdir=/etc' '--localstatedir=/var' '--with-libtool' '--with-idn=/usr' '--mandir=/usr/man' '--enable-shared' '--disable-static' '--enable-threads' '--with-openssl=/usr' '--with-libjson=yes' '--build=x86_64-slackware-linux' 'build_alias=x86_64-slackware-linux' 'CFLAGS=-O2 -fPIC'
compiled by GCC 5.3.0
compiled with OpenSSL version: OpenSSL 1.0.2f  28 Jan 2016
linked to OpenSSL version: OpenSSL 1.0.2f  28 Jan 2016
compiled with libxml2 version: 2.9.3
linked to libxml2 version: 20903
compiled with libjson-c version: 0.12
linked to libjson-c version: 0.12

anc ★★★★★
()
Ответ на: комментарий от anc

Спасибо. Но что меня ещё настареживает, что если пройтись по всем значениям и ссумировать их, то они тоже совпадают.

curl http://localhost:8053/ | xmllint --format - | awk 'BEGIN { FS="[<>]" } /total/ { sum += $3 } /TotalUse/ { print "TotalUse", $3 } END { print "TotalSum", sum }'
TotalUse 9917656985
TotalSum 9917656985

Т.е. там всё счётчики побиты.

beastie ★★★★★
() автор топика
Ответ на: комментарий от beastie

Если вам интересно, могу оставить ее работать, через пару дней напомните только, там уже должно получиться явное не соответствие реально потребленной памяти и выхлопом бинда.

anc ★★★★★
()
Ответ на: комментарий от beastie

ок. Прописал его на парочке машин, субъективно так быстрее значение TotalUse растет. Напомните потом посмотреть что получилось.

anc ★★★★★
()
Ответ на: комментарий от beastie

Плохо, фокус не прошел, растет но не такими темпами как сразу после запуска сейчас всего «TotalUse»:28622484.

anc ★★★★★
()
Ответ на: комментарий от anc

Я кажется догадался в чем дело, счетчик увеличивается от самого факта снятия статистики. Тупо запустил watch так уже стало «TotalUse»:33264100,
Продолжаем тестирование :)

anc ★★★★★
()
Ответ на: комментарий от anc

А я прав. Убрал использование этого сервака с компов, поменял на while [ 1 ], уже «TotalUse»:136354241
Выхлоп tcpdump -i eth0 -n port 53 - пустой а TotalUse растет как на дрожжах :)

anc ★★★★★
()
Ответ на: комментарий от anc

Ну, все. Думаю такой статистики достаточно будет. Снимал в цикле while [ 1 ] Старовал после полной перезагрузки системы.
Старт скрипта Mon May 23 20:04:02 MSK 2016
Остановка Mon May 23 22:19:44 MSK 2016

cat /proc/meminfo
MemTotal:        1011052 kB
MemFree:          814068 kB
MemAvailable:     931608 kB
Buffers:           37532 kB
Cached:            71676 kB
SwapCached:            0 kB
Active:            99304 kB
Inactive:          40676 kB
«TotalUse»:2101479459, - т.е. в два раза превышает доступную память.
ЗЫ tcpdump -i eth0 -n port 53 - так же пустой

anc ★★★★★
()
Ответ на: комментарий от beastie

Плиз, напишите потом чем закончилось, мне оно пока не надо, но результат решения интересен just for fun. :)

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.