【ユーリミット】

ulimit(リソース制限) とは?

💡 プロセスの「使いすぎ」にブレーキをかける安全装置
📌 このページのポイント
ulimit — プロセスのリソース上限を制御 プロセス リソースを使おうとする ulimit による制限 -n (nofile) ファイル数上限 -v (virtual mem) 仮想メモリ上限 -u (nproc) プロセス数上限 soft limit ユーザーが変更可 hard limit root のみ変更可
ulimit のリソース制限のイメージ
ひよこ ひよこ

サーバーで「Too many open files」ってエラーが出たんだけど…

ペンギン先生 ペンギン先生

それはulimitに引っかかっているね。Linuxではプロセスが同時に開けるファイル数に上限があるんだ。ulimit -n で現在の値を確認してみよう。デフォルトは1024であることが多いよ。

ひよこ ひよこ

1024って少なくない?

ペンギン先生 ペンギン先生

Webサーバーやデータベースのように大量のコネクションを扱うサービスでは全然足りないことがあるよ。ulimit -n 65536 で一時的に増やすか、/etc/security/limits.confに書いて恒久的に変更できるんだ。

ひよこ ひよこ

ファイル数以外にも制限があるの?

ペンギン先生 ペンギン先生

たくさんあるよ。ulimit -a で全部見られるんだけど、最大プロセス数(-u)、メモリサイズ(-v)、コアダンプサイズ(-c)、スタックサイズ(-s)など。これらはすべてシステムを暴走プロセスから守るための安全装置なんだ。

ひよこ ひよこ

ソフトリミットとハードリミットって何が違うの?

ペンギン先生 ペンギン先生

ソフトリミットは一般ユーザーが自分で引き上げられる上限で、ハードリミットはrootしか変更できない絶対的な上限だよ。ソフトリミットはハードリミットを超えて設定できない。本番サーバーの設定では、systemdのユニットファイルでLimitNOFILEを指定する方法も覚えておくと実務で役に立つよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ulimit」って出てきたら「プロセスリソース使用量の上限を設定するコマンド」と思えればだいたいOK!
📖 おまけ:英語の意味
「user limit」 = ユーザー制限
💬 ユーザーごとのリソース使用制限を設定するコマンドだよ
← 用語集にもどる