【性能优化】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.

猜你喜欢

转载自blog.csdn.net/wangjia55/article/details/80415818