我在生产中使用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
的输出。我用***
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)
答案 0 :(得分:2)
如果您在没有任何HTTP服务器的情况下使用Play,则可以在发送Result
(manipulate the response headers)之前Scala version,否则您需要检查前端服务器的设置。< / p>
response().setHeader(CONNECTION, "Keep-Alive");
response().setHeader("Keep-Alive", "timeout=3, max=10");
return ok(index.render());
请注意,这些值是样本,我不知道它们是否符合您的需求。