web-dev-qa-db-ja.com

安全な上限制限とは何ですか?

これはulimit -aの出力です

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 16382
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

これは64ビットのインストールであり、max-openファイルを1024から5000などのより制限の多い制限に増やしたいと思います。それは問題になりますか?不安定になりますか?

ありがとう。

7
theTuxRacer

max-openは、1人のユーザーがシングルセッションで同時に開いたままにできるファイルの数です。

また、すべての制限設定はログインごとに設定されることに注意してください。それらはグローバルではなく、永続的でもありません。セッション中のみ存在します。

(man limits.conf(5)から)

最大数の安全な値は、実際に使用方法によって異なります。デフォルト値のポイントは、些細な(偶発的な)サービス拒否を防ぐことです。開いているファイルの数にはグローバルな制限もあります。

cat /proc/sys/fs/file-max

たとえば、次のコマンドを実行して、その番号を変更できます

echo 100000 > /proc/sys/fs/file-max

(明らかにユーザーrootを使用)。さらに良いのは、fs.file-max = 10000/etc/sysctl.confに追加して、再起動後に同じ設定を読み込むことです。


Ulimitの時点では、その数を増やしても安全です。ただし、新しいファイルを開くことはもうできないため(たとえば、ログインするにはファイルを開く必要があります)、開いているファイルの数はグローバルfile-maxを超えてはなりません。

複数のユーザーがいる場合、デフォルトを変更すると、誰でもより多くのファイルを開くことができることに注意してください。たとえば、30ユーザー* 5000ファイル= 150 000オープンファイル(全員が最大数のファイルを開き、単一セッションのみを使用すると仮定)。複数のユーザーが使用している(本当に多くのファイルを開くように)本当にリソースを消費するソフトウェアがある場合、問題になる可能性があります。

3
Olli