日本XMLユーザーグループのメーリングリストにて、以下のような問題が発生するケースがあることを確認しました。
- CPU負荷が100%になったまま戻らない
- りすと亭のプロセスが持つスレッド数が異常な水準に増えている(100以上)
- しかし、処理が重くなるだけで動作は継続している
現時点での推測 §
りすと亭は、さほど多くのスレッドを使うプログラムではありません。最大でも簡易httpd機能の同時リクエスト数+α程度のスレッド数しか使いません。
ただし、1つだけ例外があります。簡易httpd機能で受け付け可能なセッション数を超えたリクエストがあった場合、限界を超えているというエラーを返送するスレッドだけは上限が決まっていません。通常、このスレッドは短いエラー情報を送信して終了します。スレッド数が100を超えるという事態は、(今のところ)このスレッドが終了せずに滞留しているということしか考えられません。
また、りすと亭バージョン 4.18.0 リリース・簡易httpd機能が止まってしまうで修正された問題と関連がありそうです。この修正によって止まらなくなったことで顕在化した問題であることが考えられます。
悩み §
規定の同時接続数を超えた場合、エラーメッセージは返送したいと思います。それを返送しない場合、利用者が混乱する可能性があります。
しかし、それを返送する試みは、無制限にスレッドを増殖される危険性を持ちます。
はたしてどう対処すべきか……、悩みます。
対象方法の方針が決まらねば、直しようがありません……。
2005年12月23日追記 §
この問題は、バージョン4.19.0で解消されました。