部屋を掃除したら漫画が沢山出てきたので書く日記

漫画とか合唱とかUNIXとかLinuxとかについて書く日記です。

ファイル・ディスクリプタ数の定義

客先のシステムでエラーメッセージが出たので製品ベンダーに問い合わせたところ、「最大ファイル・ディスクリプタ数が少ないので増やして下さい」との回答が来ました。お客さんに報告したところ「プロセスが使うスレッドでなんでファイル・ディスクリプタ数が関係あるのか?ファイルオープンの最大値じゃないの?ていうかファイル・ディスクリプタ数って何か教えて」みたいな返事がきましたので僕が調べる事に。

ところがファイル・ディスクリプタ数についての設定例、設定方法はネット上にあるものの、そもそもどういう定義か、という情報があまりありません。どうしたものか。「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]

って感じ。
こういうのはすぐ忘れるのでメモメモ。