对 systemd 中的延迟服务启动进行故障排除:历史资源优先级?

对 systemd 中的延迟服务启动进行故障排除:历史资源优先级?

我正在调查服务启动的延迟,my-service.service即使它配置为在 后启动network.target。使用 后systemd-analyze plot,我注意到my-service.service30 秒后开始network.target,这似乎异常延迟。

为了排除故障,我进行了一项实验,创建了一个名为 的简单单元文件foo.service,该文件仅在 100 毫秒后启动network.target。奇怪的是,当我从foo.serviceto复制配置my-service.service并重新启动 Raspberry Pi 时,my-service.service尽管配置与 相同,但仍然出现 30 秒的延迟foo.service

我很困惑为什么my-service.service会遇到这种延迟foo.service,尽管它们的配置是相同的。我很好奇 systemd 中是否内置了任何历史智能,其中my-service.service历史上可能需要更多资源,导致即使在配置更改后它也会稍后启动。

有人可以解释为什么尽管共享相同的配置,但my-service.service仍然在 30 秒后启动吗?network.targetfoo.service

  • foo.service
    [Unit]
    Description=foo.service
    After=network.target
    
    [Service]
    Type=simple
    ExecStart=/home/pi/foo.sh
    
    [Install]
    WantedBy=multi-user.target
    
  • foo.sh
    #!/bin/bash
    
    while sleep 1; do echo "executing foo.sh"; done
    

相关内容