最近公司的API总是莫名其妙的报告一些redis 打开文件太多的错误。今天老板终于下定决心,必须解决这个bug。经过测试,问题终于出现了。
原因是因为在linux下面ulimit命令限制了可以打开文件描述符的最大数量。默认是1024.而redis的最大连接数maxclients却远远大于这个数量。
这样问题就出现了,比如redis的连接是10000,那么是否redis就真的能够接受10000的连接呢?答案是不是的。redis还受到系统的一些限制。比如ulimit。
最后通过ulimit命令更改了打开描述符的数量。问题解决了。比如:
ulimit -n 10000
注意:报告这个错误,并不是redis的maxclients的问题。如果是连接不够用,不会报告这个错误。
ulimit命令的用法:可以查看这个网址,写的不错。很详细。
http://www.ibm.com/developerworks/cn/linux/l-cn-ulimit/