redis5启动报错 maxclients至少需要10032

centos7 编译安装redis5,启动时报错如下:

2570:M 05 Jan 2020 16:51:25.414 # You requested maxclients of 10000 requiring at least 10032 max file descriptors.
2570:M 05 Jan 2020 16:51:25.415 # Server can't set maximum open files to 10032 because of OS error: Operation not permitted.
2570:M 05 Jan 2020 16:51:25.415 # Current maximum open files is 4096. maxclients has been reduced to 4064 to compensate for low ulimit. If you need higher maxclients increase 'ulimit -n'.

错误意思是:

2570:M 2020年1月5日16:51:25.414#您请求的10000个maxclients至少需要10032个最大文件描述符。

2570:M 2020年1月5日16:51:25.415#由于操作系统错误,服务器无法将最大打开文件数设置为10032:不允许操作。

2570:M 2020年1月5日16:51:25.415#当前最大打开文件数为4096。maxclients已减少到4064以补偿低ulimit。 如果需要更高的maxclients,请增加'ulimit -n'。


意思很明白,请求10000个客户端,至少要10032个文件描述符。

maxclients的作用:设置同一时间最大客户端连接数,默认无限制,Redis可以同时打开的客户端连接数为Redis进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis会关闭新的连接并向客户端返回max number of clients reached错误信息


那么在linux系统中配制相关参数在那里呢?经过查找资料,原来是这样的:

在CentOS 7 / RHEL 7的系统中,使用Systemd替代了之前的SysV,因此 /etc/security/limits.conf 文件的配置作用域缩小了一些。limits.conf这里的配置,只适用于通过PAM认证登录用户的资源限制,它对systemd的service的资源限制不生效。登录用户的限制,与上面讲的一样,通过 /etc/security/limits.conf 和 limits.d 来配置即可。

对于systemd service的资源限制,如何配置呢?

全局的配置,放在文件 /etc/systemd/system.conf 和 /etc/systemd/user.conf。 同时,也会加载两个对应的目录中的所有.conf文件 /etc/systemd/system.conf.d/*.conf 和 /etc/systemd/user.conf.d/*.conf

其中,system.conf 是系统实例使用的,user.conf用户实例使用的。一般的sevice,使用system.conf中的配置即可。systemd.conf.d/*.conf中配置会覆盖system.conf。

显然我们属于第二种。

那么解决办法有两种(任选一种):

1、在/etc/systemd/system.conf 中添加

        DefaultLimitNOFILE=65535

2、在/etc/systemd/system/redis.service 中添加

        LimitNOFILE=65535


最后设置ulimit -n 65535

猜您喜欢
    0条评论