回答:
スクリプトを介してプロセスを開始する場合、デーモンを実行する直前にスクリプト内でulimitを呼び出すことができます。
ユーザーまたはすべてのユーザーのulimitを増やしたい場合はpam_limits
、ログイン時に適用される制限を設定できます。これらはに設定されてい/etc/security/limits.conf
ます。あなたの場合、次のようなことができます:
* hard nofile 2048
「ハード」はハード制限を意味することに注意してください-これは超えられず、変更できません。ソフト制限は、ユーザー(ルート機能を持たない人など)によって変更できますが、ハード制限を超えてはなりません。
のlimits.conf
使用に関する詳細については、をお読みくださいpam_limits
。
カーネルに設定されている開いているファイルの「合計最大」もあります。現在の設定は次の方法で確認できます。
cat /proc/sys/fs/file-max
そして、新しい値を設定します:
echo "104854" > /proc/sys/fs/file-max
再起動間で構成を保持する場合は、追加します
sys.fs.file-max=104854
に
/etc/sysctl.conf
現在の最大ファイル使用量を確認するには:
[root@srv-4 proc]# cat /proc/sys/fs/file-nr
3391 969 52427
| | |
| | |
| | maximum open file descriptors
| total free allocated file descriptors
total allocated file descriptors
(the number of file descriptors allocated since boot)
0
、それだけで割り当てられたファイルハンドルの数が正確に使用されるファイルハンドルの数と一致していることを意味します。
49152 0 18446744073709551615
。最初の2つの列が3番目の列に加算されない理由がわかりません。そしてもし私が利用可能な1.8兆兆を持っているなら、私はそれらすべてをどのように使用したかわかりません。
長期実行プロセスの開始方法によって異なります。起動時に(/etc/rcX.d/*スクリプトを介して)起動された場合、カーネルによってデフォルトの制限が設定され、再コンパイルしないと調整できないため、起動スクリプトにulimit呼び出しを行う必要があります。
たとえば、次のようなエントリ/etc/security/limits.conf
を使用cron
して起動する場合、使用は機能します。
@reboot $HOME/bin/my-program
/etc/pam.d/cronがpam_limits.soを有効にするため、これは機能するはずです。
これは/etc/security/limits.confに追加できます
root soft nofile 100000
root hard nofile 100000
保存して再起動します。
非常に良いコマンドですulimit -n
が、接続数が多く、開いているファイルが多すぎるという問題があります。
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 519357
max locked memory (kbytes, -l) 32
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) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
ulimit -a
、ではありませんulimit -n
。