□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.の方法で確認できます。

タグ:

Linux
最終更新:2006年09月07日 19:41