在使用redis的过程中碰到了err max number of clients reached的异常。
从字面上来看就是连接的客户端达到了上限,但是通过google发现,redis配置文件中默认最大的连接数是没有限制的,看了很多的文章,最终通过修改系统的最大文件描述符解决办法。
这里可以查看下系统的最大文件描述符再来修改:
1、查看redis的PID
# ps -ef|grep redis
root 23427 21683 0 19:08 pts/0 00:00:00 grep redis
root 31886 1 0 11:30 ? 00:00:00 /usr/local/bin/redis-server /data/redis/6379/redis6379.conf
2、查看redis进程的文件描述符最大值
# cat /proc/31886/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 10485760 unlimited bytes
Max core file size 0 unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 65535 65535 processes
Max open files 65535 65535 files
Max locked memory 32768 32768 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 35840 35840 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max open files这里显示的是65535,是我修改之后的数值,原来的是4021,用来做数据的缓存有点小。
下面是修改的过程:
首先修改 /etc/security/limits.conf 文件,在文件最后面添加下面4行。
表示root用户和其余非root用户打开的文件描述符的限制都是65535。
root soft nofile 65535
root hard nofile 65535
* soft nofile 65535
* hard nofile 65535
在redhat系列下可能设置了这个然后重启机器或者重新登陆就有用了,但是ubuntu下不行。还要设置另外两个配置文件。
修改/etc/pam.d/su 和 /etc/pam.d/sudo,两个文件都添加下面一行
session required pam_limits.so
设置完成后就重新启动一下机器吧。
再次通过查看proc下面的进程信息,发现设置生效了。
本文介绍了解决Redis连接达到上限的问题,通过调整系统最大文件描述符限制来提高并发能力。
3719

被折叠的 条评论
为什么被折叠?



