□Linux ファイルディスクリプタの最大値を変更する。
ファイルディスクリプタは、ファイルオープンなどで使われるポインタのようなものです。
(Windowsだとハンドルがこれに近い。)
アプリケーションにて、ファイルクローズを行わず、ファイルオープン、
等を続けると、Too many open files といったエラーが発生することがあります。
その様な場合に、下記の方法で最大数を増やす事で、回避できる場合があります。
1.まず、現在の設定の確認を行ってください。
# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
file size (blocks, -f) unlimited
max locked memory (kbytes, -l) 4
max memory size (kbytes, -m) unlimited
open files (-n) 1024 <-- ここです。
pipe size (512 bytes, -p) 8
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 7168
virtual memory (kbytes, -v) unlimited
Linuxの初期設定のままだと、1024となります。
# ulimit -n
で、この設置だけを求める事も出来ます。
2.上記で確認したものは、ユーザー環境での設定ですが、これを増やすにあたり
システム環境でのファイル制限も増やしておく必要があります。
echo "65536 " > /proc/sys/fs/file-max
または
# sysctl -w fs.file-max=65535
<確認>
# sysctl -a | grep file-max
※設定して即有効になります。OSリブートの必要はありません。
但し、OSがリブートした際にクリアされます。常に有効にしたい場合は、
rc.localなどのスクリプトに追加しておく必要があります。
3.ユーザー環境での設定方法
# ulimit -n 65536
設定されたかどうかは、1.の方法で確認できます。
最終更新:2006年09月07日 19:41