SystemdでNProcを管理する

SystemdでNProcを管理する

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=

関連情報