8

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

1 に答える 1

2

HTTP サーバーなしで Play を使用している場合は、 ( Scala バージョン)を送信する前に応答ヘッダーを操作できます。それ以外の場合は、フロントエンド サーバーの設定を確認する必要があります。Result

response().setHeader(CONNECTION, "Keep-Alive");
response().setHeader("Keep-Alive", "timeout=3, max=10");
return ok(index.render());

これらの値はサンプルであり、ニーズに合うかどうかはわかりません。

于 2012-11-15T15:31:05.000 に答える