我在生产中使用了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)

最佳答案

如果您在不带任何HTTP服务器的情况下使用Play,则可以在发送Result(manipulate the response headers)之前先Scala version,否则您需要检查前端服务器的设置。

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

请注意,这些值只是示例,我不知道它们是否适合您的需求。

关于playframework-2.0 - 如何在Play框架2中配置Keep-alive超时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13395084/

10-10 09:38