私は本番環境で playframework 2.0 を使用していますが、対応する Java プロセスによって開かれるファイルの数が急増しています。プロセスで開いているファイルのデフォルトの許容数を 1024 から 4096 に変更しましたが、これは問題を遅らせるだけで、しばらくすると開いているファイルの数が非常に多くなり、サーバーの速度が低下し、java.net.SocketException「開いているファイルが多すぎる」というエラーが発生することさえあります。 」がログに表示されます。
ubuntu サーバー 12.04、sun jdk 1.7.0_09 を使用しています。
lsofコマンドは、開いているファイルのほとんどすべてがユーザー接続用に作成されたソケットであることを示しているため、playframework で使用される Netty サーバーが多くの開いている接続を維持していると結論付けます。私が理解している限り、Netty サーバーのキープアライブ動作を変更する必要があります。たとえば、キープアライブ タイムアウトを低く設定する必要があります。playframework 2.0 でこれを設定するにはどうすればよいですか? それとも、問題は他の何かにあるのでしょうか? 必要に応じて、任意の構成を提供できます。
UPD:の出力の一部を次に示しますlsof -aPn -p 12251。ipsの一部を検閲しました***
COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF   NODE NAME
java    12251 root  324u  IPv6             279502      0t0    TCP 10.127.0.***:80->***.***.65.137:51506 (ESTABLISHED)
java    12251 root  325u  IPv6             286749      0t0    TCP 10.127.0.***:80->***.***.18.121:1624 (ESTABLISHED)
java    12251 root  327u  IPv6             287220      0t0    TCP 10.127.0.***:80->***.***.126.210:49244 (ESTABLISHED)
java    12251 root  330u  IPv6             279289      0t0    TCP 10.127.0.***:80->***.***.65.155:12444 (ESTABLISHED)
java    12251 root  331u  IPv6             285609      0t0    TCP 10.127.0.***:80->***.***.33.233:2552 (ESTABLISHED)
java    12251 root  332u  IPv6             285610      0t0    TCP 10.127.0.***:80->***.***.33.233:2554 (ESTABLISHED)
java    12251 root  333u  IPv6             287236      0t0    TCP 10.127.0.***:80->***.***.90.20:16040 (ESTABLISHED)
java    12251 root  334u  IPv6             284047      0t0    TCP 10.127.0.***:80->***.***.195.2:1175 (ESTABLISHED)
java    12251 root  335u  IPv6             279357      0t0    TCP 10.127.0.***:80->***.***.65.137:51273 (ESTABLISHED)
java    12251 root  336u  IPv6             279988      0t0    TCP 10.127.0.***:80->***.***.65.137:51287 (ESTABLISHED)