如何加快 nmbd 的启动速度?

如何加快 nmbd 的启动速度?

我想弄清楚为什么nmbd启动需要这么长时间并修复它。

那么我该如何加快 的启动时间呢nmbd?这烦人的五秒钟看起来有点像某种超时。而且由于smbd取决于nmbd此减速会影响 Samba 服务器的启动。

无论我做什么,它总是需要几乎恰好五秒钟才能启动,但最重要的是默认情况下nmbd和在到达之前的输出smbd中。systemd-analyze critical-chainmulti-user.target

# systemd-analyze blame|grep -P '^\d'
5.963s fwupd.service
5.062s bolt.service
5.043s nmbd.service
1.088s dev-nvme0n1p2.device
1.045s upower.service

# systemctl status nmbd.service 
● nmbd.service - Samba NMB Daemon
     Loaded: loaded (/lib/systemd/system/nmbd.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2020-06-29 22:32:28 CEST; 6min ago
       Docs: man:nmbd(8)
             man:samba(7)
             man:smb.conf(5)
   Main PID: 1645 (nmbd)
     Status: "nmbd: ready to serve connections..."
      Tasks: 1 (limit: 76702)
     Memory: 12.7M
     CGroup: /system.slice/nmbd.service
             └─1645 /usr/sbin/nmbd --foreground --no-process-group

Jun 29 22:32:23 sysname systemd[1]: Starting Samba NMB Daemon...
Jun 29 22:32:28 sysname systemd[1]: Started Samba NMB Daemon.

这是我已覆盖nmbd.servicesmbd.service单位如下:

[Unit]
After=multi-user.target

[Install]
WantedBy=

... 结果是这样的(systemd-analyze plot输出):

在 multi-user.target 之后排队 nmbd

... 与此相反(systemd-analyze plot输出)

nmbd 的预设,在 multi-user.target 之前排队

两次启动都耗时十二秒多一点。

答案1

我遇到了同样的问题,于是决定查看源代码。在日志../../lib/util/become_daemon.c:135(become_ready)中,在出现来自的日志消息之前有 5 秒的间隔。通过在源代码因为become_ready,我发现nmbd.c源代码。现在,除了打电话,还有什么可能导致五秒钟的延迟sleep()?果然,第 371 行有以下代码:

        /* We only count IPv4, non-loopback interfaces here. */
        while (iface_count_v4_nl() == 0) {
            sleep(5);
            load_interfaces();
        }

iface_count_v4_nl返回 IP 为不是环回和IPv4。这表明调度 nmbd.service 启动 network-online.target应该管用。

相关内容