windows系统下too many open files寻求解决办法

wangjiangbo2 2012-03-20 10:04:32
最近做个网站 ,访问量比较大,基本上3天就得需要重启weblogic。
在linux下知道修改打开文件数,windows下怎么解决呢?
...全文
2973 26 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
cl1_1_1_1 2013-08-08
  • 打赏
  • 举报
回复
请问楼主现在解决了么?
cl1_1_1_1 2013-03-17
  • 打赏
  • 举报
回复
请问楼主是怎么解决的?
dracularking 2012-05-23
  • 打赏
  • 举报
回复
不过话说回来,对于文件访问,系统难道是不加限制任由自由访问,然后超限了就报too many open files!?
暂且认为是这样,这个限对于xp系统是在c:\windows\system32\config.nt

http://www.beaverlog.com/therapist/dos_support/windows_nt_2000_xp.htm
dracularking 2012-05-23
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 的回复:]

过多并发到是有可能,服务器没做集群,问题一直找不到,权宜之计是做个定时计划任务每天重启weblogic。你说的监测工具是什么软件?
[/Quote]
我具体不清楚,我只是觉得这样的工具是存在的。
如果是并发导致,为什么不试试相关的模拟测试呢,模拟足够多用户登录并打开文件的行为。
BUG弄潮儿 2012-05-23
  • 打赏
  • 举报
回复
好像没有啊,只有你在使用了系统资源的话,及时关闭销毁就行
wangjiangbo2 2012-05-23
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]
引用 12 楼 的回复:

引用 10 楼 的回复:
需要重启是因为内存耗尽的缘故还是什么其它?
就这点程序吗?看不出什么问题
如果是内存问题,也可以用内存检查工具来观察单/多用户使用后的内存状况

weblogic后台信息没有提到memory,现在是找不到问题出在哪!!!

我11楼的意思可能没表达清楚,可能在文件关闭上不存在问题,但是因为过多并发访问的原因,不能排除同一时间打……
[/Quote]


过多并发到是有可能,服务器没做集群,问题一直找不到,权宜之计是做个定时计划任务每天重启weblogic。你说的监测工具是什么软件?
dracularking 2012-05-23
  • 打赏
  • 举报
回复
我初步找了下,对windows 2003 控制文件打开数的地方貌似找不到。
wangjiangbo2 2012-05-23
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 的回复:]
我确实不知道,但你可以把分给我
[/Quote]
。。。分不是这么混的?
xue08161981 2012-05-23
  • 打赏
  • 举报
回复
我确实不知道,但你可以把分给我
dracularking 2012-05-23
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 的回复:]

2003系统没有那个文件,对于文件访问,都是文件下载,那些是必须开放的。
[/Quote]
小结一下吧

首先确定这个too many open files的所产生的原因是什么,如果不是因为使用文件后流未关闭等不应该的错误所导致,那就是超出了系统允许上限,那就主要有两个途径:
1. 提高系统文件打开数许可上限(但这可能算是治标不治本的方法,因为仍没有完美杜绝超限的可能性)
2. 当用户打开数将超过使用上限时是不是可以对其加以限制,这里方法很多,比如将其加入排队等候队列或直接提示用户数过多无法下载等。
sffx123 2012-05-23
  • 打赏
  • 举报
回复
跟楼主一样碰到过该问题,幸好是Linux下的,产生这个的原因是并发线程过多,每个线程里面使用了第三方的jar里面开启流过多导致的,不知道楼主是这个问题不?仔细找一下优化一下代码,尤其是并发多的地方。
wangjiangbo2 2012-05-23
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 的回复:]
不过话说回来,对于文件访问,系统难道是不加限制任由自由访问,然后超限了就报too many open files!?
暂且认为是这样,这个限对于xp系统是在c:\windows\system32\config.nt

http://www.beaverlog.com/therapist/dos_support/windows_nt_2000_xp.htm
[/Quote]
2003系统没有那个文件,对于文件访问,都是文件下载,那些是必须开放的。
dracularking 2012-05-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]

引用 10 楼 的回复:
需要重启是因为内存耗尽的缘故还是什么其它?
就这点程序吗?看不出什么问题
如果是内存问题,也可以用内存检查工具来观察单/多用户使用后的内存状况

weblogic后台信息没有提到memory,现在是找不到问题出在哪!!!
[/Quote]
我11楼的意思可能没表达清楚,可能在文件关闭上不存在问题,但是因为过多并发访问的原因,不能排除同一时间打开文件数过多的可能性。可以通过测试来确认这种情况的存在。
dracularking 2012-05-22
  • 打赏
  • 举报
回复
对了,应该有更完整的错误信息吧?因为你提到了too many open files
简单分析就像楼上他们提到的打开文件后未及时关闭导致超出可承受文件打开数范围
但是要找到哪里未及时关闭凭这点信息无法具体判断,应该存在一些强力的工具可以分析当前文件乃至内存使用状态。
wangjiangbo2 2012-05-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
需要重启是因为内存耗尽的缘故还是什么其它?
就这点程序吗?看不出什么问题
如果是内存问题,也可以用内存检查工具来观察单/多用户使用后的内存状况
[/Quote]
weblogic后台信息没有提到memory,现在是找不到问题出在哪!!!
dracularking 2012-05-02
  • 打赏
  • 举报
回复
是文件打开过多问题,也有可能是并发导致的,多用户同时试图打开同一个文件
dracularking 2012-05-02
  • 打赏
  • 举报
回复
需要重启是因为内存耗尽的缘故还是什么其它?
就这点程序吗?看不出什么问题
如果是内存问题,也可以用内存检查工具来观察单/多用户使用后的内存状况
wangjiangbo2 2012-05-02
  • 打赏
  • 举报
回复
IO操作的很少啊,也就是下载文件用到了,文件流也正常关闭了。
下面是代码

response.setContentType("text/x-msdownload");
//response.addHeader("Content-Disposition","attachment; filename=\"" + new String(abc.getBytes("GBK"),"utf-8") + "\"");
response.addHeader("Content-Disposition","attachment; filename=\"" + new String(newsName.getBytes(),"ISO-8859-1") + "\"");
java.io.OutputStream os = null;
java.io.FileInputStream fis = null;
try {
os = response.getOutputStream();
fis = new java.io.FileInputStream(aFilePath + temp_name);
byte[] b = new byte[1024];
int j = 0;
while ((j = fis.read(b)) > 0) {
os.write(b, 0, j);
}

os.flush();

} catch (Exception e) {
e.printStackTrace();
}finally{
if(fis!=null){
fis.close();
}

if(os!=null){
os.close();
}
}
liuyuhua0066 2012-05-02
  • 打赏
  • 举报
回复
文件流未及时close?
wangjiangbo2 2012-05-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

liunx下修改文件句柄数就可以了吗?我估计只能延缓,还是仔细检查程序
[/Quote]
这出问题肯定是程序的问题,既然改不了句柄数只能对程序进行优化,你是不是给个特定范围怎么改?



加载更多回复(6)

81,117

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧