SystemD "task"とnprocの値の違いは何ですか?
現在のジョブ数がSystemdのデフォルト値TasksMax(512)を超えてサービスが中断されたことがわかりました。しかし、私たちはそれを設定したので、LimitNPROC=infinity
サービスが512に制限されているという事実に驚きました。
私たちは設定でこの問題を解決しました。
TasksMax=infinity
2つの違いは何であり、TasksMax
いつLimitNPROC
他のものを使用する必要がありますか?
答え1
LimitNProc=
rlimit(ulimit とも呼ばれる) です。 「リソース制限の概念の詳細については、setrlimit(2)を参照してください。これらのオプションで構成されているほとんどのプロセスリソース制限はプロセスごとに適用され、プロセスは独立した新しいリソースセットを取得するために分岐できます。プロセスは設定された制限を超えることがあります。」これはこのステートメントの例外の1つでman systemd.exec
あり、 RLIMIT_NPROC
「実際のユーザーID」(UID)にプロセス数を制限します。
TasksMax=
man systemd.resource-control
「プロセスを構成するためのLinux制御グループ(cgroups)カーネルの概念に依存する」オプションの1つとして、より具体的に文書化されています。これらの制限はすべて、systemdサービス用に作成されたcgroupに適用されます。単に新しいプロセスをフォークするだけでは、cgroupを離れることはできません。
TasksMax=
私にはもっと意味があります。なぜ使用したいのかわかりませんLimitNProc=
。