本番で問題が発生しており、ファイルなしの制限に達していると思われますが、追跡や直接的な証拠が見つかりませんでした。私たちはRHEL 7で動作しています。次のコマンドを使用して、lsof
ユーザーが開いたファイル記述子の数を見つけます。
/sbin/lsof -u <issue_user> | awk '$4 ~ /[0-9]+[rwu -].*/'
コマンドの一部はawk
整数で始まるファイル記述子のみを取得し、mem/rtd/cwdなどは無視することです。上記のコマンドは400,000を超える結果を返しましたが、/etc/security/limits.conf
ユーザーのファイルなし制限は131072です。
cat /etc/security/limits.conf
...
<issue_user> hard nofile 131072
<issue_user> soft nofile 131072
...
ulimit -aH
問題ユーザーとして実行します。
$ ulimit -aH
address space limit (Kibytes) (-M) unlimited
core file size (blocks) (-c) unlimited
cpu time (seconds) (-t) unlimited
data size (Kibytes) (-d) unlimited
file size (blocks) (-f) unlimited
locks (-x) unlimited
locked address space (Kibytes) (-l) unlimited
message queue size (Kibytes) (-q) 800
nice (-e) 0
nofile (-n) 131072
nproc (-u) 131072
pipe buffer size (bytes) (-p) 4096
max memory size (Kibytes) (-m) unlimited
rtprio (-r) 0
socket buffer size (bytes) (-b) 4096
sigpend (-i) 724561
stack size (Kibytes) (-s) 32768
swap size (Kibytes) (-w) not supported
threads (-T) not supported
process size (Kibytes) (-v) unlimited
によると、/etc/security/limits.conf
nofileは「開かれたファイル記述子の最大数」です。このユーザーがに定義されているよりも多くのファイル記述子を持つことができるのはなぜですかlimits.conf
?