gpt4 book ai didi

java - 在tomcat 6.0中从jar文件读取静态资源时如何减少linux上打开文件句柄的数量?

转载 作者:行者123 更新时间:2023-12-01 16:01:59 24 4
gpt4 key购买 nike

在我们的应用程序中,我们从位于 WEB-INF/lib 的 jar 文件中读取静态资源(即 JavaScript 文件)。碰巧服务器因打开文件过多异常而停止工作。我发现(使用lsof),jar 文件被打开了几次,并且当我重新加载页面时,打开次数会随着页面 JavaScript 文件的数量而增加。我尝试了以下几件事,但没有取得积极的结果:

  • URLConnection setDefaultUSeCache(false)
  • URLConnection setUSeCache(false)
  • context.xml cachingAllowed="false"

还有什么我可以尝试的吗?

最佳答案

在 Tomcat 服务器中,每个传入请求都使用一个 TCP 套接字,并且该套接字消耗进程可用总数中的一个文件描述符。文件描述符(FD)是进程打开文件时创建的句柄。每个进程可以使用一定数量的 FD,这通常是操作系统级别的设置。

如果每页加载很多 JS 脚本文件,那么每个 JS 请求在处理时都会消耗一个 FD。

随着进入服务器的请求数量增加,您可能会遇到打开许多套接字的情况,从而耗尽 FD,并收到“Too Many Open Files”错误。

检查# cat/proc/sys/fs/file-max的值,看看你的Tomcat在服务器上可以打开多少个FD。

理想情况下应为 65535。请参阅此处了解如何增加此限制

http://tech-torch.blogspot.com/2009/07/linux-ubuntu-tomcat-too-many-open-files.html

另一个建议是,是否可以通过将 JS 文件合并为一个来减少 JS 调用次数。

关于java - 在tomcat 6.0中从jar文件读取静态资源时如何减少linux上打开文件句柄的数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3626155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com