バーチャルホストとファイルディスクリプタの話

ファイルディスクリプタの話を書こうと思ったけど、なぜか今猛烈に腹痛がひどいけど、もうすぐ今日は終わってしまいそうなので、がんばって書こうと思うぅぅぅぅ。。。

なので簡単にw

■ ファイルディスクリプタって何よ

ファイルディスクリプタってのは、ファイルや標準入出力をOSが識別するため整数値(どうやら、Linuxとかのカーネル内だとプログラムでファイルディスクリプタを管理する配列?見たいなデータ構造があってそれのインデックス値っぽい。大分アバウトw)、Linuxとかだと標準入力:0 標準出力:1 標準エラー出力:2 というファイルディスクリプタが割り当てられていて、新たにファイルオープンすると、その時に生成されるファイルディスクリプタは「3」になるらしい。

■ ファイルディスクリプタには上限値がある

ファイルディスクリプタには、ユーザー毎に上限値があります。その上限値を超えると当然ファイルが開けなくなります。Linuxとかだと、下記コマンドで確認できます。デフォルト値は多分「1024」です。

ulimit -n

■ 単一のWebサーバ上にバーチャルホストを多数作るとファイルディスクリプタを使い果たしてしまう。

バーチャルホストを沢山作ると、バーチャルホスト毎にWebサーバがエラーログやら内部的なファイル処理?やなんやらにファイルディスクリプタを使用するので、あっという間に使いきって、しまいにはapacheが起動できなくなる恐れがあるらしいです。

ただファイルディスクリプタの上限は足らないなら設定変えて増やせばいいんじゃないかと思ったけど結局それにも限界があるので、ログファイル数を少なくしたり、そもそもサブドメインを使わない構成にしたり、サーバを増やすなりする必要があるって事なんかな?

いまいち分かったようで分かってない感じがして気持ち悪いけど、もうオレの腹痛が限界ぃぃぃwww