くまきち

山と旅と家族が大事。
でも激しい物欲が理性と財布のタガを飛ばす
最近は自転車も乗ってる

FreeBSD: kern.maxfile設定

2009-05-09 12:21:10 | SEまわり
FreeBSD 7.0R にて自宅サーバを運用しているが、LAN 内向けにプロキシサービスも動かしている。

が、このサービスが時々死ぬ。
ついでに、他のサービスも一部死ぬ。

その際の、messages には次のようなメッセージが出力されている。

  May 8 19:48:43 hostname kernel: kern.maxfiles limit exceeded by uid xxx, please see tuning(7).

意味は書かれている通りなので、kern.maxfiles の値を増やせば良いことになる。

現在の値を確認してみる。

  % sysctl kern.maxfiles
  kern.maxfiles: 3192


これがデフォルト値みたい。

これを最大値に変更する。

  % sysctl -w kern.maxfiles=65536

で、変更されたことを確認。

  % sysctl kern.maxfiles
  kern.maxfiles: 65536


恒久設定にするので、/etc/sysctl.confにも追記する。

  kern.maxfiles=65536

これでOK。


理屈としては、プロキシサービスが FD (File Descriptor) を食い尽くしたところに他のサービスがファイルを開こうとすると、FD 用領域を確保できずにこけてしまう。と言う事になるんだろうが、それならそれで異常終了してくれればいいのに、中途半端にいくつかのプロセスが死んでしまっていたからタチが悪い。

半死だったのは mailman サービスだが、mailman サービスがこの状態になってしまうと、稼働監視の方で検知が難しい。

mailman 自身はどこかのポートをつかんでるわけじゃない(Postfix 経由)し、プロセスリストを見てチェックするか、実際にテスト用 ML を用意して、そこに定期的にポストして、配送状況をチェックするしかないのかな。


最新の画像もっと見る