22.9. systemd ユニットファイルを使用してアプリケーションの制限を設定する

systemd サービスマネージャーは、既存または実行中の各ユニットを監視し、それらのコントロールグループを作成します。ユニットの設定ファイルは /usr/lib/systemd/system/ ディレクトリーにあります。

ユニットファイルを手動で変更し、以下を行うことができます。

  • 制限を設定する。
  • 優先度を設定する。
  • プロセスのグループのハードウェアリソースへのアクセスを制御する。

前提条件

  • root 権限があります。

手順

  1. /usr/lib/systemd/system/example.service ファイルを編集して、サービスのメモリー使用量を制限します。

    …​
    [Service]
    MemoryMax=1500K
    …​

    この設定により、コントロールグループ内のプロセスが超えることのできない最大メモリーの制限が設定されます。example.service サービスは、このようなコントロールグループの一部であり、制限を課せられています。測定単位のキロバイト、メガバイト、ギガバイト、またはテラバイトを指定するには、接尾辞 K、M、G、または T を使用できます。

  2. すべてのユニット設定ファイルを再読み込みします。

    # systemctl daemon-reload
  3. サービスを再起動します。

    # systemctl restart example.service

検証

  1. 変更が有効になったことを確認します。

    # cat /sys/fs/cgroup/system.slice/example.service/memory.max
    1536000

    この出力例では、メモリー消費量が約 1,500 KB に制限されていることを示しています。

関連情報