http と https の両方のリクエストを処理するプレイ フレームワーク 1.2.4 サイトがあります。
Play は 80 と 443 の両方のポートをリッスンします。リバース プロキシはインストールされていません。
しばらくすると、ログに大量の「java.io.IOException: Too many open files」が表示され、サイトが応答を停止します。
どうやら、play は https 接続を CLOSE_WAIT 状態のままにすることがあります。これらの接続は次のようになります。
java 24151 root 201u IPv6 915797 0t0 TCP Ubuntu-1004-lucid-64-minimal:https->xdsl.******.net:55055 (CLOSE_WAIT)
これは、生きている(数時間動作している)および死んでいる(16kの開いているファイルを使用)のlsofダンプの分析です。
$ grep "CLOSE_WAIT" dead.txt | wc -l
10473
$ grep "ESTABLISHED" dead.txt | wc -l
1888
$ grep "https.*CLOSE_WAIT" dead.txt | wc -l
10473
$ grep "https.*ESTABLISHED" dead.txt | wc -l
1621
$ grep "CLOSE_WAIT" alive.txt | wc -l
7
$ grep "ESTABLISHED" alive.txt | wc -l
50
$ grep "https.*CLOSE_WAIT" alive.txt | wc -l
7
$ grep "https.*ESTABLISHED" alive.txt | wc -l
32
ご覧のとおり、リクエストの約 20% は http ですが、CLOSE_WAIT 状態の接続はすべて https です。
何が問題を引き起こしている可能性がありますか? それはプレイフレームワークのバグでしょうか?