RIGHT:[[Sun 関係覚え書き]]
//Solaris/ファイルディスクリプタ
*現状の調査 [#g5102c35]
システムで使われているファイルディスクリプタの数と
最大数を表示する.
下の例では,現状が 100 で MAX が 400 です.
# sysdef | grep desc
0x0000000000000100:0x0000000000000400 file descriptors
プロセスで使用しているディスクリプタ数を表示する.
(下記で,319 はプロセス番号)
# /usr/proc/bin/pfiles 319 |grep rlimit
Current rlimit: 256 file descriptors
現状の設定を表示する.
ulimit -Hn (ハードリミットを表示)
ulimit -Sn/ulimit -n (ソフトリミットを表示)
*カーネルパラメータの変更 [#j7dfd107]
/etc/system に以下のような行を追加して,システムを再起動する.
*-------------------------
set rlim_fd_cur=1024
set rlim_fd_max=16384
*-------------------------
ただし,Solaris の FAQ には,以下の注意書があります.
>ソフト・リミットを 256 より大きく設定した場合、特定のアプリケーション、
>特に BCP のアプリケーションはおかしくなるかも知れません。 リミットを
>1024 より大きく設定した場合、 select() を使用しているアプリケーションは
>おかしくなるかも知れません。
>
>stdio を使用しているプログラムや stdio を使用しているライブラリ・ コール
>を使用しているプログラムでさえも、 stdio のリミットである 256 ファイル
>以上オープンすると、 おかしくなるかも知れません。 ファイル・ディスク
>リプタを数多く使用するプログラムは、stdio 用に小さい番号のディスクリ
>プタを使用するようにするか、 予約しておくべきです。
また,
http://www.brandonhutchinson.com/File_descriptors.html
には,
-rlim_fd_cur を 256 より上,
-rlim_fd_max を 1024 より上
に設定すると危険だと書かれています.