私は本番環境で 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)