memcached:无法为打开文件设置rlimit错误和解决方案

时间:2020-01-09 10:42:21  来源:igfitidea点击:

我在RHEL 6/CentOS 6.x上安装memcached服务器。
但是,当使用service memcached start命令启动服务器,出现以下错误:

Starting memcached: failed to set rlimit for open files. Try running as root or requesting smaller maxconns value. [FAILED]
启动memcached:无法为打开的文件设置rlimit。
尝试以root身份运行或者请求较小的maxconns值。

如何解决此问题?

Linux附带了按进程文件和系统范围的文件系统描述符限制。
每个用户都有每个进程的文件描述符限制。
默认设置为1024,包括硬限制,该值也设置为1024。
只有root用户可以增加硬限制。
以我的经验,在启动内存缓存服务器时,您需要增加它。

有关Memcached的更多信息

memcached服务器以memcached用户身份运行。
您可以通过访问/etc/passwd文件来验证这一点,执行:

$ less /etc/passwd
$ grep -i memcached /etc/passwd

缺省配置文件位于/etc/sysconfig/memcached:

$ cat /etc/sysconfig/memcached

输出示例:

PORT="11211"
USER="memcached"
MAXCONN="4096"
CACHESIZE="256"
OPTIONS="-l 192.168.1.100"

为Memcached设置每个进程的文件描述符限制

编辑/etc/security/limits.conf文件,执行:

# vi /etc/security/limits.conf

设置memcached用户的最大打开文件数,如下所示:

#"soft" for enforcing the soft limits
#"hard" for enforcing hard limits
# "nofile" max open file
# *********************************************************************
# * Note soft limit must be >= MAXCONN value (defined in /etc/sysconfig/memcached *
# *********************************************************************
# Username      type    item           value
memcached       soft    nofile          5000
memcached       hard    nofile         6144

保存并关闭文件。
您需要注销并再次登录。
现在,执行以下命令来启动memcached服务器:

# /sbin/service memcached start

请注意,您可以通过用*替换memcached来设置所有进程的全局限制,如下所示:

# Username      type    item           value
*       soft    nofile          5000
*       hard    nofile         6144