LINUX.ORG.RU

Долго стартует nmbd.service

 ,


0

3

Добрый день, уважаемые!

Помогите пожалуйста добиться быстрого старта этого самого nmbd.service. Если я вручную перезапускаю сервис, то он перезапускается мгновенно, а при загрузке долгая пауза. Debian stable. Заранее спасибо.

kirill@Kirill-PC:~$ systemd-analyze time 
Startup finished in 2.284s (kernel) + 36.514s (userspace) = 38.798s


kirill@Kirill-PC:~$ systemd-analyze blame | head -8
         22.026s nmbd.service
          6.217s systemd-tmpfiles-setup.service
          4.462s networking.service
          3.521s alsa-restore.service
          3.474s pppd-dns.service
          3.473s incron.service
          3.465s systemd-logind.service
          3.456s rc-local.service


kirill@Kirill-PC:~$ systemd-analyze critical-chain 
The time after the unit is active or started is printed after the "@" character.
The time the unit takes to start is printed after the "+" character.

graphical.target @36.509s
└─multi-user.target @36.509s
  └─smbd.service @35.994s +514ms
    └─nmbd.service @13.967s +22.026s
      └─basic.target @13.946s
        └─paths.target @13.946s
          └─cups.path @13.946s
            └─sysinit.target @13.871s
              └─nfs-common.service @13.481s +389ms
                └─rpcbind.target @13.481s
                  └─rpcbind.service @12.167s +1.313s
                    └─network-online.target @12.167s
                      └─network.target @12.167s
                        └─ifup@eth0.service @12.167s
                          └─networking.service @7.704s +4.462s
                            └─systemd-random-seed.service @7.249s +454ms
                              └─var.mount @6.357s +874ms
                                └─systemd-fsck@dev-disk-by\x2duuid-0d8732cc\x2d691a\x2d41a0\x2d9266\x2d6690e358a902.service @5.048s +1.309s
                                  └─dev-disk-by\x2duuid-0d8732cc\x2d691a\x2d41a0\x2d9266\x2d6690e358a902.device @5.047s

★★

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

Посмотрел

окт 13 09:01:32 Kirill-PC systemd[1]: Starting LSB: start Samba NetBIOS nameserver (nmbd)...
окт 13 09:01:51 Kirill-PC nmbd[710]: Starting NetBIOS name server: nmbd.
окт 13 09:01:51 Kirill-PC systemd[1]: Started LSB: start Samba NetBIOS nameserver (nmbd).

также поднял log level в samba, но пока нихера в нем не понял

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

также поднял log level в samba, но пока нихера в нем не понял

Ну, судя по составу юнита, скорее всего тут и надо искать. Ждёт какой-то ресурс, видимо.

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

В логах nmbd ничего нет по поводу долгого старта.

[2016/10/13 09:29:50,  0] ../source3/nmbd/nmbd.c:908(main)
  nmbd version 4.2.10-Debian started.
  Copyright Andrew Tridgell and the Samba Team 1992-2014
[2016/10/13 09:29:50.948568,  3] ../source3/nmbd/nmbd.c:958(main)
  Becoming a daemon.
[2016/10/13 09:29:50.949299,  3] ../source3/nmbd/nmbd.c:1044(main)
  Opening sockets 137
[2016/10/13 09:29:50.949332,  3] ../source3/nmbd/nmbd.c:766(open_sockets)
  open_sockets: Broadcast sockets opened.

Вот в это время 09:29:50 — если судить по логам, nmbd уже работает, а до этого времени в логе ничего нет.

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

Не знаю, я с самбой дела не имею. Попробуй ещё повысить уровень отладки, и посмотреть лог smbd на всякий случай. У тебя дыра по времени между сообщением сустемд о начале запуска юнита и сообщением самого nmbd о старте?

Вообще можно попробовать отключить smbd.service и nmbd.service, и попробовать их позапускать руками после перезагрузки. Если так же медленно, то можно применить strace.

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

Да я уже повышал до максимума уровень отладки. Если я запускаю руками - то стартуют моментально. Я с systemd на вы, поэтому не могу врубиться. В похожих темах висит точно такая же проблема, которая была решена вырубанием нахрен самбы, но это же не выход.

Едва нашел этот долбаный юнит. Он похоже генерируется автоматом при перезагрузке и лежит вот здесь: /run/systemd/generator.late/nmbd.service

вот его содержимое если что

# Automatically generated by systemd-sysv-generator

[Unit]
SourcePath=/etc/init.d/nmbd
Description=LSB: start Samba NetBIOS nameserver (nmbd)
Before=smbd.service runlevel2.target runlevel3.target runlevel4.target runlevel5.target shutdown.target
After=network-online.target local-fs.target remote-fs.target
Wants=network-online.target
Conflicts=shutdown.target

[Service]
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
SysVStartPriority=1
ExecStart=/etc/init.d/nmbd start
ExecStop=/etc/init.d/nmbd stop
swarnk ★★
() автор топика
Ответ на: комментарий от swarnk

Посмотрел еще на двух виртуалках с debian — там то же самое:

  └─smbd.service @2min 5.971s +699ms
    └─nmbd.service @1min 43.819s +22.151s

  └─smbd.service @1min 7.755s +724ms
    └─nmbd.service @41.277s +26.477s
swarnk ★★
() автор топика
Ответ на: комментарий от swarnk

Если я запускаю руками - то стартуют моментально.

Не-не-не, сначала systemctl disable, потом перезагрузка и запуск руками. Возможно, вместо systemctl стоит применить update-rc.d, но вроде в jessie всё унифицировано уже.

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

Попробовал на виртуалке с debian.

systemctl disable smbd
systemctl disable nmbd
reboot

после перезагрузки пытаюсь запустить вручную. Запускаются быстро. Ни о каких 20 секундах речи не идет.

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

Я так понимаю мне нужно сделать disable этим сервисам (smbd, nmbd) юниты для которых создаются во время загрузки, создать собственные юниты для smbd и nmbd и запускать их в самую последнюю очередь. Но подождем более сведущих в systemd товарищей, может они чего подскажут.

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

Не воспроизводится в контейнере с jessie (запускается под stretch).

graphical.target @477ms
└─multi-user.target @477ms
  └─smbd.service @364ms +112ms
    └─nmbd.service @75ms +273ms
      └─basic.target @74ms
        └─timers.target @74ms
          └─systemd-tmpfiles-clean.timer @74ms
            └─sysinit.target @74ms
              └─networking.service @48ms +25ms
                └─systemd-random-seed.service @45ms +3ms
                  └─systemd-remount-fs.service @34ms +9ms
                    └─system.slice @28ms
                      └─-.slice @27ms

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

хмм... интересно. А где же я тогда мог напортачить...

а у тебя юнит тоже вот здесь лежит?

/run/systemd/generator.late/nmbd.service

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

Напишите или скопируйте из нормального дистрибутива нормальный systemd unit, то что у вас - это автоматически сгенерированная обёртка над старыми баш-скриптами, чёрт знает что там внутри долго тупит.

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

Нормальный дистрибутив

Из Debian:

[Unit]
Description=Samba NMB Daemon
Documentation=man:nmbd(8) man:samba(7) man:smb.conf(5)
After=network.target

[Service]
Type=notify
NotifyAccess=all
PIDFile=/var/run/samba/nmbd.pid
EnvironmentFile=-/etc/default/samba
ExecStart=/usr/sbin/nmbd $NMBDOPTIONS
ExecReload=/bin/kill -HUP $MAINPID
LimitCORE=infinity

[Install]
WantedBy=multi-user.target
[Unit]
Description=Samba SMB Daemon
Documentation=man:smbd(8) man:samba(7) man:smb.conf(5)
After=network.target nmb.service winbind.service

[Service]
Type=notify
NotifyAccess=all
PIDFile=/var/run/samba/smbd.pid
LimitNOFILE=16384
EnvironmentFile=-/etc/default/samba
ExecStart=/usr/sbin/smbd $SMBDOPTIONS
ExecReload=/bin/kill -HUP $MAINPID
LimitCORE=infinity

[Install]
WantedBy=multi-user.target
[Unit]
Description=Samba AD Daemon
Documentation=man:samba(8) man:samba(7) man:smb.conf(5)
After=network.target

[Service]
Type=notify
NotifyAccess=all
PIDFile=/var/run/samba/samba.pid
LimitNOFILE=16384
EnvironmentFile=-/etc/default/samba
ExecStart=/usr/sbin/samba $SAMBAOPTIONS
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

anonymous
()
Ответ на: комментарий от pod

Он не тупит, а чего-то ожидает, потому что скрипт из init.d запускается явно не одновременно с активацией юнита. Да и /proc/%nmbd_pid% создаётся по времени, совпадающим с записью «Starting NetBIOS name server: nmbd.» в логе.

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

Есть соображения, как выяснить точно?

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

Но у ТС вроде как не видно network-wait-online.target

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

                    └─network-online.target @12.167s
                      └─network.target @12.167s
                        └─ifup@eth0.service @12.167s
когда у него весь этот network становится реально online — кагбэ неясно. Но очень сомнительно, что вот прям в ту же миллисекунду, как стартовал ifup@eth0.service. Для сравнения, кусок моего:
  └─smb.service @1min 13.102s +2.308s
    └─nmb.service @1min 9.161s +3.932s
      └─network-online.target @1min 9.077s
        └─NetworkManager-wait-online.service @49.952s +19.122s
          └─NetworkManager.service @43.547s +6.278s
            └─network-pre.target @43.541s

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

Изначально зарепортил баг в systemd, но после разбирательств maintainer перенаправил баг в samba. Текущая ситуация:

Bug reported by you has been fixed in the Git repository. You can see the changelog below, and you can check the diff of the fix at:

http://git.debian.org/?p=pkg-samba/samba.git;a=commitdiff;h=cdca3db

P.S. Когда по опыту знающих этот фикс должен попасть в stable?

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

Там вроде совсем пустяковое изменение, можешь сам сделать примерно так в /etc/systemd/system/nmb.service.d/nmb-fix.conf:

[Unit]
After=network-online.target
Wants=network-online.target

Это перекроет и дополнит юнит в /lib/systemd/system/

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