java.net.SocketException Too many open files 问题的解

Posted on

java.net.SocketException Too many open files 问题的解决办法 - R&D--梦想在这里成真 R&D--夢を実現しましょう R&D--Dreams Come Ture - IT博客

R&D--梦想在这里成真 R&D--夢を実現しましょう R&D--Dreams Come Ture 努力 我们将梦想变为现实

IT博客 :: 首页 :: 新随笔 :: 联系 :: 聚合 :: 管理 posts - 134, comments - 20, trackbacks - 0

<2009年2月>日一二三四五六25262728293031123456789101112131415161718192021222324252627281234567

常用链接

留言簿(1)

随笔分类

随笔档案

文章分类

相册

搜索

*

最新评论

阅读排行榜

评论排行榜

原本以为是tomcat的配置或是应用本身的问题,"谷歌"一把后才发现,该问题的根本原因是由于系统文件资源的限制导致的。

具体可以参考http://www.bea.com.cn/support_pattern/Too_Many_Open_Files_Pattern.html 的说明。具体的解决方式可以参考一下: 1。ulimit -a 查看系统目前资源限制的设定。 [root@test security]/# umlimit -a -bash: umlimit: command not found [root@test security]/# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 1024 pipe size (512 bytes, -p) 8 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 7168 virtual memory (kbytes, -v) unlimited [root@test security]/# 通过以上命令,我们可以看到open files 的最大数为1024 那么我们可以通过一下命令修改该参数的最大值

  1. ulimit -n 4096 [root@test security]/# ulimit -n 4096 [root@test security]/# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 4096 pipe size (512 bytes, -p) 8 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 7168 virtual memory (kbytes, -v) unlimited

这样我们就修改了系统在同一时间打开文件资源的最大数,基本解决以上问题。

以上部分是查找网络上的解决方法。设置了之后段时间内有作用。

后来仔细想来,问题还是要从根本上解决,于是把以前的代码由认真地看了一遍。终于找到了,罪魁祸首。

在读取文件时,有一些使用的BufferedReader 没有关闭。导致文件一直处于打开状态。造成资源的严重浪费。

修改之后的简单代码如下:

public void test(){ BufferedReader reader =null; try{ reader = 读取文件; String line = ""; while( ( ine=reader.readLine())!=null){ 其他操作 } } catch (IOException e){ System.out.println(e); } finally{
if(reader !=null){ try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } }

以上只是我的个人见解,希望对大家有所帮助。 posted on 2008-08-07 09:23 TRE-China R&D 阅读(6624) 评论(2) 编辑 收藏 引用 所属分类: LinuxJAVA

Feedback

/# re: java.net.SocketException: Too many open files 问题的解决办法 2011-03-08 11:10 | 212 212121 回复 更多评论 /# re: java.net.SocketException: Too many open files 问题的解决办法[未登录]

2011-11-24 12:58 | 11 不错 回复 更多评论 刷新评论列表

博问 - 解决您的IT难题 IT新闻: · 印度35美元平板机出师不利 · Firefox领先Windows,Chrome领先Linux · 物理是一个NP-hard问题 · 优酷网与CCTV6电影网再签署一年合作协议 · Bottlenose:将数据可视化融入社交网络运营中 博客园首页 IT新闻 IT问答 程序员招聘 标题 请输入标题 姓名 请输入你的姓名 主页 请输入验证码 验证码 /* 内容(提交失败后,可以通过“恢复上次提交”恢复刚刚提交的内容)

请输入评论内容 Remember Me? 登录 使用高级评论 新用户注册 返回页首 恢复上次提交 [使用Ctrl+Enter键可以直接提交] 博客园首页随笔: · 游戏运营技术之---玩家关系管理(PRM)--〉推进虚拟营销 · 建立完善的日期定义表 · 《人月神话》摘要 · C++标准编程:虚函数与内联 · 莫蹭网:“黑客”怎样伪造wifi钓你(Windows平台) 博客园 IT新闻 BlogJava 博客生活 C++博客 PHP博客 相关文章:

Powered by: IT博客 Copyright ©2012 TRE-China R&D

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途