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 より上
に設定すると危険だと書かれています.

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS