limits.conf

提供: ArchWiki
2021年7月21日 (水) 21:55時点におけるOriaca372m (トーク | 投稿記録)による版 (同期)
ナビゲーションに移動 検索に移動

関連記事

/etc/security/limits.conf を使うことで PAM でログインしたユーザーが使用できるリソースを制限することができます。フォーク爆弾などによってシステムリソースが食い尽くされることを防ぐのに役立ちます。

ノート: このファイルはシステムサービスには影響しません。systemd サービスは /etc/systemd/system.conf, /etc/systemd/user.conf, /etc/systemd/system/unit.d/override.conf などを使ってリソースを制御することが可能です。詳しくは systemd-system.conf(5) の man ページを見てください。

構文

デフォルトファイルにはコメントが豊富に付けられていますが、limits.conf(5) の man ページを読むことでさらに詳しい情報を得ることができます。

推奨設定

core

コアファイルはデバッグのときは役に立ちますが、通常の使用ではとくに役立ちません。ソフトリミットを0にしてハードリミットを無制限にすることで、デバッグでコアファイルが必要になったときだけ ulimit -c unlimited で一時的にリミットを変更することができます。

*           soft    core       0           # Prevent corefiles from being generated by default.
*           hard    core       unlimited   # Allow corefiles to be temporarily enabled.

nice

最高優先度 (-20) のプロセスを実行できるのは root だけにすることで、システムが反応しなくなった場合に root で対処することができます。

*           hard    nice       -19         # Prevent non-root users from running a process at minimal niceness.
root        hard    nice       -20         # Allows root to run a process at minimal niceness to fix the system when unresponsive.

nofile

特定のドメインでプロセスが一度に開くことができるファイル記述子の数を制限します。特定のゲームを動作させるには 値を 8192 などに増やす必要があります。MongoDB や Apache Kafka 等のデータベース管理システムの中は nofile64000128000 に設定することを推奨しているものもあります[1]

*           hard    nofile     8192        # Required for certain games to run.

nproc

フォーク爆弾を複製できる回数を制限するため、nproc の制限は重要です。ただし、設定した値が低すぎるとシステムが不安定になったり、新しいプロセスが作成できなくなって使用不可能な状態になることもあります。

ミニマルなウィンドウマネージャを使って複数のデスクトップアプリケーションやデーモンを動かす場合は 300 は低すぎますが、X を起動しないサーバーの場合は十分です (ジョージア大学の Linux サーバーでは 300 に設定されています)。

以下は全てのユーザーの nproc を制限する例です:

*           hard    nproc      2048        # Prevent fork-bombs from taking out the system.

2048 という値はあくまで例であり、場合によってはもっと高い値が必要になります。逆に、低くしても問題ない可能性もあります。

nproc の設定を何にするのであれ、root ユーザーはいくらでもプロセスを作成できるように設定してください。そうしないと nproc の制限が低すぎた場合に回復できなくなってしまう可能性があります。上記の設定の後に以下の行を記述してください (65536 という値は自由です)。

root        hard    nproc      65536       # Prevent root from not being able to launch enough processes

priority

デフォルトの nice 値は基本的に 0 ですが、以下のパラメータを使うことでユーザーやグループによってそれぞれ個別の優先度を設定することができます。

*           soft    priority   0           # Set the default priority to neutral niceness.

参照