Linux处理too many open files(ulimit )

先说一下遇到的问题情况
我在给一个web项目做压力测试的时候,1000一下的并发没有问题,并发数一旦破1000就会出现问题,看日志打印,有一个比较关键的地方就是(too many open files)
具体的异常信息不记得了
大概就是每一个连接创建的一个线程都会去访问一个xml文件,并发数上来了之后,超出了最大文件打开数,就会造成读取xml文件失败,最直接的导致了dom4j的document异常
解决这个问题有两种办法(推荐第二种,先说第一种)

【查看最大文件打开数】

ulimit -a

这里写图片描述

这里箭头所指的1024就是默认的数值
也就是为什么我并发数破1000之后就会出问题
注意:这个数值是单个用户的限制数量,也就是说我root能打开1024,zhangsan也能,lisi也能,并不是系统总共能打开的数量

【修改open files-方法1】

有两个命令,都好用
#命令1
ulimit -n 2048
#命令2
ulimit -HSn 2048
参数 -H  设定资源的硬性限制;-S  设定资源的弹性限制;
这两个参数具体有什么作用我还没有细致的研究
执行任意一条命令之后,我们再来看看限制数量

这里写图片描述

我们很直观的看到数值已经变成了我们更改后的数值,很方便
但是也有弊端,就是仅在当前shell下生效,如果我再启动一个shell,或者我退出之后再进来,那么这个设置就不再生效

这里写图片描述

右边的是我新启动的shell界面,我们可以看到,新的shell的数据是没有改变的

【修改open files-方法2】

打开文件“/etc/security/limits.conf”(命令行请用vim)

在这里插入图片描述

在底部加入配置
*   soft    nofile    8192
*   hard    nofile    8192

这里写图片描述

这里的“*”的意思就是所有用户都生效
保存
不需要重启机器,重新登录即可生效

【注意】

以上设置我在Red Hat上均生效,在Ubuntu不生效
Ubuntu系统需要把“*”换为root,而且仅root生效,写zhangsan的话,zhangsan也不生效
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值