ポートフォワードソケットのクローズ漏れ
修正してみました。これでどうでしょうか。
良いと思います。
以前のようにサーバ側のsshdのFD数が増え続けるような現象は無くなりました。 今のところエラーなども発生しません。
今回の現象は解析に非常に手間取ったので、ポートフォワードしているセッション数とかが確認出来るステータス画面とかがあると便利ですね。
私も1分に1回 POP3 を見に行くのに転送をしていますが、16時間以上連続で使うことはないので気付きませんでした。
# 100回くらいで発生するバグには気付いたことがあります。
TeraTerm は CHANNEL_CLOSE を受け取って CHANNEL に使うリソースなどを開放してしまっていましたので、ステータス画面があっても分からなかったでしょう。(CHANNEL_CLOSE の ACK を送っていなかったので、リモートが CHANNEL に使うリソースを開放できない状況になっていました)
TeraTermでポートフォワードを行っているとサーバ側(試したのはDebian Linux)の sshdがオープンしているFD数がどんどん増加していき、そのうち
となり新規のポートフォワード接続が出来なくなる。この時、
と、FD数が同時ファイルオープン数のリミットに達していることも確認出来る。 時間が経過してもこのFD数は減ることはない。
他の数種類のSSHクライアントと比較してみたが、他はいずれも時間の経過とともに sshdがオープンしているFD数が減少していく。
TeraTermはソケットのクローズをし忘れているような気がする。