我在生產中使用playframework 2.0,並且我看到相應java進程打開的文件數量迅速增加。我將一個進程的打開文件的默認允許數量從1024改爲4096,但這只是延遲了一個問題,一段時間後打開文件的數量變得如此之大,以至於服務器速度變慢,有時甚至出現一個「打開太多的文件太多文件「出現在日誌中。如何在playframework 2中配置保持活動超時
我使用的是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)
你確定它來自Play嗎?你不在你的應用中生成某種文件嗎? –
我不生成或從文件系統讀取任何文件,所有資源都會自動打包在應用程序jar中。如果我通過'lsof'工具測試打開哪些文件,我會發現這些文件是針對很多不同IP的unix套接字,所以我認爲這些套接字已連接到用戶。例如,它們不符合我的數據庫的連接。 –