Systemd:特定の依存関係なしに多数のサービスを1つずつ開始します。

Systemd:特定の依存関係なしに多数のサービスを1つずつ開始します。

約15のサービスで構成されるシステムがあります。相互依存性がなく(つまり、開始するために他のサービスが必要なサービスはありません)、起動が完了するとsystemdに通知します(例Type=notify:)。

問題は、同時に起動するとシステムが過負荷になり、システムタイムアウトが原因でプロセスが終了することです。

私が望むのは、サービスが特別な順序なしで順番に開始されるようにサービスを「グループ化」することです。システムサービスファイルを介してこれを達成できますか?

ところで:これは私のサービスファイルのテンプレートです。

[Unit]
Description=Template service file
After=network.target

[Service]
Type=notify

User=1000
Group=1000

# Set the working directory and the binary to start
WorkingDirectory=/home/user/
ExecStart=/path/to/some/process

# The standard input and output are useless (i.e. unused by the process)
StandardInput=null
StandardOutput=null
# Disable the standard error because all logs are already saved in a specific directory
StandardError=null

# Send SIGTERM then SIGKILL after TimeoutStopSec seconds (default: 2)
KillMode=mixed
TimeoutStopSec=2

# Setup a start timeout
TimeoutStartSec=30

# On abnormal (i.e. non 0 exit code or killed by a signal) termination restart the process after RestartSec seconds (default: 5)
Restart=on-failure
RestartSec=5
# Authorise process restart only 5 times maximum in a 120 seconds interval
StartLimitBurst=5
StartLimitInterval=120

# Set watchdog timeout (default: 10)
WatchdogSec=10
NotifyAccess=main

# Set security options
NoNewPrivileges=yes

[Install]
WantedBy=custom.target

ご協力ありがとうございます

ベストアンサー1

サービスをターゲットにグループ化して使用し、依存Requires関係Afterを追加できますBefore。これらのサービスは相互に排他的であり、systemdに通知も提供すると述べたので、実行する順序に応じて各サービスにAfterを追加するだけです。

システムを最大限に活用するには、一部のサービスを並列に実行してCPU帯域幅を完全に活用することを検討できます。

システム化されたキーワードを読むことができます。ここ

おすすめ記事