【性能优化】tomcat & Redis 优化:关于 too many open files error

背景说明:

     使用Jmeter 进行压力测试,同时在linux环境下使用“lsof -p 4154 | wc -l”查看io访问量。

     进行压力测试时发现io访问量在4500左右,服务器redis报错,错误信息too many open files error。

   

原因是因为在linux下面ulimit命令限制了可以打开文件描述符的最大数量。默认是1024.而redis的最大连接数maxclients却远远大于这个数量。

这样问题就出现了,比如redis的连接是10000,那么是否redis就真的能够接受10000的连接呢?答案是不是的。redis还受到系统的一些限制。比如ulimit。

最后通过ulimit命令更改了打开描述符的数量。提高了IO量的级别比如:

[html]  view plain  copy
  1. ulimit -n 65535

如果依然出现“Toomany open files”,使用ulimit发现“openfiles (-n)”仍然是1024,那么之前设置的65535是没起作用,而切换到root用户发现却是65535;而在非root用户下

ulimit -n 65535

会报异常:

ulimit: max user processes: cannot modify limit

原来是被/etc/security/limits.conf 限制了,打开此文件即可看到,对默认用户是有限制的,因此可以加入

*       soft    noproc 65535

*       hard    noproc 65535

*       soft    nofile 65535

*       hard    nofile 65535

这样就非root用户就可以设置ulimit为65535了。

修改之后测试发现io访问量可以提高到10000.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值