nxagentd на ubuntu - 24 Too many open files

Started by headcraft, March 23, 2021, 10:25:41 AM

Previous topic - Next topic

headcraft

День добрый!
После продолжительного времени работы netxms agent на ubuntu linux, агент перестаёт работать. Он не собирает статистику. Все значения замирают, при этом timestamp всех dci обновляется. Графики превращаются в линии, соединение не рвётся, агент никак не сообщает в Management console что он мёртв.  В логе агента сыпятся ошибки
*E* [                   ] Unable to accept incoming connection (24 Too many open files)
Временное лечение это перезагрузить сервис агента. Хватит примерно на неделю в моём случае
Я использую logparser , мониторю всего-то 4 лог файла, на них настроен logrotate по умолчанию.
при запуске сервиса nxagentd по умолчанию стоит ограничение ulimit soft limit 1024. При повышении данного параметра до 2048 проблема повторится не через неделю, а через 2 недели.

При запуске агента, его процесс открывает 16 дескрипторов файлов в моём случае. Вывод делал командой:
ls /proc/<nxagentd_pid>/fd/ | wc -l
На следующее утро цифра увеличивается уже до 82
Когда замечаю что агент не работает, и валятся ошибки Too many open files вывод команды показывает число soft limit
Очень похоже на open files descriptor leak. На всех серверах где стоит ubuntu и netxms agent последней версии есть проблема. К сожаление точно не могу сказать с какой версии это началось, но точно в 2020 году. То ли в версии  3.1 то ли в 3.2 этого ещё не было. Сейчас стоит 3.8.193-1

Filipp Sudanov

Попробуйте версию 3.8.226, какие-то исправления на тему дескрипторов там были.

Если не поможет - что еще делает этот агент? Есть ли какие-нибудь external parameters?

headcraft

Обновил до версии 3.8.226-1. Есть вероятность, что теперь не дождусь того дня когда дескрипторы кончатся.. На двух разных серверах под управлением убунты 16.04 и 18.04 segmentaion fault уже 2 раза за день. Вся надежда на убунту 20.04 теперь.

Description:    Ubuntu 18.04.5 LTS
Release:        18.04
4.15.0-135-generic

Mar 25 09:09:01 SRV-HeadCraft kernel: [4471532.229875] nxagentd[31637]: segfault at 0 ip 00007f8465d989de sp 00007f845c0b9cb0 error 4 in libc-2.27.so[7f8465ccd000+1e7000]
Mar 25 09:09:03 SRV-HeadCraft systemd[1]: nxagentd.service: Main process exited, code=killed, status=11/SEGV
Mar 25 09:09:03 SRV-HeadCraft systemd[1]: nxagentd.service: Failed with result 'signal'.

Mar 25 13:00:34 SRV-HeadCraft kernel: [4485424.685005] nxagentd[19452]: segfault at 0 ip 00007f24fb5829de sp 00007f24f1da5cb0 error 4 in libc-2.27.so[7f24fb4b7000+1e7000]
Mar 25 13:00:34 SRV-HeadCraft systemd[1]: nxagentd.service: Main process exited, code=killed, status=11/SEGV
Mar 25 13:00:34 SRV-HeadCraft systemd[1]: nxagentd.service: Failed with result 'signal'.


Description:    Ubuntu 16.04.7 LTS
Release:        16.04
4.4.0-200-generic

Mar 25 12:04:23 mail kernel: [134243.963129] nxagentd[13092]: segfault at 0 ip 00007fae5a1f8e8e sp 00007fae517cfc00 error 4 in libc-2.23.so[7fae5a13f000+1c0000]
Mar 25 12:04:23 mail systemd[1]: nxagentd.service: Main process exited, code=killed, status=11/SEGV
Mar 25 12:04:23 mail systemd[1]: nxagentd.service: Unit entered failed state.
Mar 25 12:04:23 mail systemd[1]: nxagentd.service: Failed with result 'signal'.

Mar 25 15:36:11 mail kernel: [146951.767623] nxagentd[10509]: segfault at 0 ip 00007f28f8e18e8e sp 00007f28f1795c00 error 4 in libc-2.23.so[7f28f8d5f000+1c0000]
Mar 25 15:36:11 mail systemd[1]: nxagentd.service: Main process exited, code=killed, status=11/SEGV
Mar 25 15:36:11 mail systemd[1]: nxagentd.service: Unit entered failed state.
Mar 25 15:36:11 mail systemd[1]: nxagentd.service: Failed with result 'signal'.

Filipp Sudanov

Ага, ну нет, это не тот способ бороться с утечкой дескрипторов. Агент поставлен из пакетов, так? Попробуйте core dump файл собрать при креше.

headcraft

#4
С одного стянул coredump:

[New LWP 15239]
[New LWP 7395]
[New LWP 7391]
[New LWP 7392]
[New LWP 7415]
[New LWP 7413]
[New LWP 7423]
[New LWP 7419]
[New LWP 15236]
[New LWP 7411]
[New LWP 7416]
[New LWP 7408]
[New LWP 7409]
[New LWP 7417]
[New LWP 7400]
[New LWP 7390]
[New LWP 7398]
[New LWP 15237]
[New LWP 15238]
[New LWP 7402]
[New LWP 7399]
[New LWP 7414]
[New LWP 7410]
[New LWP 7396]
[New LWP 7394]
[New LWP 7393]
[New LWP 7421]
[New LWP 7425]
[New LWP 7412]
[New LWP 7401]
[New LWP 7397]
[New LWP 7418]
[New LWP 7420]
[New LWP 7424]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/bin/nxagentd -d'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  __wcscasecmp (s1=0x7f83ff7e3384 L"gent.Restart", s2=0x0) at wcscasecmp.c:57
57      wcscasecmp.c: No such file or directory.

Вывод команды thread apply all bt full в приложении.

На остальных серверах процесс nxagentd уже открыл 470 дескрипторов

Victor Kirhenshtein

Там где агент падает - поставьте пожалуйста еще -dbg пакеты (netxms-agent-dbg, netxms-dbdrv-sqlite-dbg, и т.д.) - тогда дамп будет сильно более полезным.

По поводу дескрипторов - пришлите пожалуйста вывод lsof -p для процесса агента.

headcraft

Quote from: Victor Kirhenshtein on April 01, 2021, 11:21:41 AM
Там где агент падает - поставьте пожалуйста еще -dbg пакеты (netxms-agent-dbg, netxms-dbdrv-sqlite-dbg, и т.д.) - тогда дамп будет сильно более полезным.

По поводу дескрипторов - пришлите пожалуйста вывод lsof -p для процесса агента.

Как поставил пакет netxms-base-dbg, всё не могу дождаться падения...

Вывод lsof -p команды в приложении.

Victor Kirhenshtein

В списке файлов очень много раз встречается /var/log/auth.log.1, /var/log/mail.log.1, и /var/log/apcupsd.events. На агенте не настроен мониторинг этих файлов через logwatch?

headcraft

Quote from: Victor Kirhenshtein on April 07, 2021, 05:52:42 PM
В списке файлов очень много раз встречается /var/log/auth.log.1, /var/log/mail.log.1, и /var/log/apcupsd.events. На агенте не настроен мониторинг этих файлов через logwatch?
Настроен
Quote from: headcraft on March 23, 2021, 10:25:41 AM
Я использую logparser , мониторю всего-то 4 лог файла, на них настроен logrotate по умолчанию.
Logparser настроен через Policy template, вот часть xml (без rules):

<parser trace="0" name="LogParser Linux">
   <macros/>
   <file>/var/log/auth.log</file>
   <file>/var/log/apcupsd.events</file>
   <file>/var/log/mail.log</file>
   <file>/var/log/proftpd/proftpd.log</file>
   <rules>
   </rule>
       .....
   </rules>
</parser>

headcraft

#9
Quote from: Victor Kirhenshtein on April 01, 2021, 11:21:41 AM
Там где агент падает - поставьте пожалуйста еще -dbg пакеты (netxms-agent-dbg, netxms-dbdrv-sqlite-dbg, и т.д.) - тогда дамп будет сильно более полезным.
Наконец рухнул агент опять, собрал дамп (ещё старой версии 3.8.250)

Filipp Sudanov

Похоже, что это та самая ошибка, которая починена в 3.8.262, пробуйте эту версию.

Victor Kirhenshtein

Изменилось ли что-нибудь после обновления на 3.8.262?