`
fannyxjf
  • 浏览: 105435 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

由图片新闻切换引起的Too many open files问题

阅读更多

在Linux系统上部署J2EE项目的话,可能会出现java.net.SocketException: Too many open files 这样的异常,网上的说法一般是说把系统的file-max值设大一些,但是这样往往是治标不治本的做法,而且这个问题绝大部分情况下都是因为程序问题引起的,最近我也碰到了这个问题,但是在网上一直没有找到相符合的资料,最后还是自己解决了,特拿出来分享下。

 

首先我们的网站已经跑了一段时间了,最近才频繁出现too many open files问题,所以可以肯定不是系统问题。

然后思考问题出现前后的不同,没觉得新增加的程序有什么可疑的地方。

接着,有一次我的浏览器停留在网站前台首页的时候,我突然发现页面过几秒钟标题栏会刷新一下,再继续观察,发现刷新的频率和首页上的图片新闻刷新的频率一致,再仔细看,刷新的时候浏览器左下角显示"正在下载图片:xxxx"字样。然后想起来,以前网站上一直没有发过图片新闻,最近才开始使用这个功能。

 

很强烈的直觉让我认为问题就出在图片新闻上,于是查看了一下图片新闻切换的JS代码(因为是团队的其他成员写的,以前我也没关注过),发现它的实现方式是每过5秒钟执行一个JS函数,在函数中更改图片新闻显示框里的<img>标签的src和href值。然后我就明白了:本来这个网站的并发量在同样以tomcat为容器的中小型应用中就算是比较大了,如果每个访问者还这样以5秒钟/次的频率来发送请求,而且请求的都是那四五张图片,那出现too many open files就不奇怪了。

 

后来把图片新闻改过了之后,网站又恢复正常了。

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics