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 を用意して、そこに定期的にポストして、配送状況をチェックするしかないのかな。
が、このサービスが時々死ぬ。
ついでに、他のサービスも一部死ぬ。
その際の、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 を用意して、そこに定期的にポストして、配送状況をチェックするしかないのかな。