ファイル・ディスクリプタ数の定義
客先のシステムでエラーメッセージが出たので製品ベンダーに問い合わせたところ、「最大ファイル・ディスクリプタ数が少ないので増やして下さい」との回答が来ました。お客さんに報告したところ「プロセスが使うスレッドでなんでファイル・ディスクリプタ数が関係あるのか?ファイルオープンの最大値じゃないの?ていうかファイル・ディスクリプタ数って何か教えて」みたいな返事がきましたので僕が調べる事に。
ところがファイル・ディスクリプタ数についての設定例、設定方法はネット上にあるものの、そもそもどういう定義か、という情報があまりありません。どうしたものか。「Solaris教えてスレッド」で聞こうかな・・・。
定義がわかったらこのエントリ更新しますー。
- 20070202追記
solarisの場合、
/etc/systemに
set rlim_fd_max=8192 set rlim_fd_cur=4096
という様に設定した後リブートする事で設定可能。
set rlim_fd_maxはHard Limit
set rlim_fd_curはSoft Limit
です。
Red Hat(EL3.0だけど)だと、
/etc/sysctl.conf
に
fs.file-max = 1048476
と設定し、その後
/etc/security/limits.conf
に
* - nofile 1048476
と設定した後リブートする事で設定可能。
/etc/sysctl.confの設定がHard Limit
/etc/security/limits.confがSoft Limit
という事だろうか。
- 20091118追記
/proc/[PID]/fd
ディレクトリ以下に、そのPIDのプロセスのファイルディスクリプタが格納されています。wc -lとかで確認すればとりあえず今使っているファイルディスクリプタ数がわかります。
あと、Solarisだと「pfiles」で確認もできるらしい。
参考:
http://docs.sun.com/app/docs/doc/819-1210/pfiles-1?a=view
pfiles [PID]
って感じ。
こういうのはすぐ忘れるのでメモメモ。