必须先确认系统已安装合适版本的libevent,否则memcached无法启动;可用rpm -qa或dpkg -l检查,缺失或版本过低时需用yum或apt安装libevent及libevent-devel。

确认系统是否已装 libevent,否则 memcached 启动直接失败
memcached 依赖 libevent 库处理异步 I/O,没它连进程都拉不起来,常见报错是:error while loading shared libraries: libevent-2.1.so.7: cannot open shared object file。别急着下 memcached,先查:
-
rpm -qa | grep libevent(CentOS/RHEL)或dpkg -l | grep libevent(Ubuntu/Debian) - 若输出为空,或版本太老(如 CentOS 6 自带的 1.4.x),必须重装:
yum install -y libevent libevent-devel(RHEL 系列)apt-get install -y libevent-dev(Debian/Ubuntu) - 注意:
libevent-devel是编译时需要的头文件包,仅装libevent运行时库不够——源码编译必装
用包管理器安装最快,但要注意配置文件路径和默认用户
大多数生产环境推荐 yum 或 apt 安装,省去编译烦恼,但默认行为容易踩坑:
- CentOS 7+:配置文件在
/etc/sysconfig/memcached,关键项如PORT="11211"、USER="memcached"、CACHESIZE="256"、MAXCONN="2048"修改后必须systemctl restart memcached才生效 - 默认用户是
memcached,不是root;如果服务要监听公网 IP 或绑定特权端口(USER 并确保该用户有权限 - Ubuntu/Debian 默认配置文件是
/etc/default/memcached,启用需把ENABLED=yes改为yes(大小写敏感)
命令行启动时,-m 和 -c 参数值不是越大越好
启动参数直接影响稳定性,尤其在资源受限的 VPS 或容器中:
-
-m 128表示分配 128MB 内存给缓存,但 memcached 实际占用会略高(slab 分配开销);设太大可能触发 OOM killer -
-c 1024是最大并发连接数,不是“越多越快”。每个连接至少占几 KB 内存,连接数过高反而挤占缓存空间 - 常见误配:
-m 2048 -c 10000在 2GB 内存机器上极易导致 swap 频繁或服务被 kill - 建议初值:
-m 64 -c 512,再根据stats输出中的curr_connections和evictions值逐步调优
验证是否真跑起来了,别只看端口监听
用 netstat -tunlp | grep :11211 看到端口开着,不代表服务健康——可能卡在初始化或拒绝连接:
- 用 telnet 测试基础连通:
telnet 127.0.0.1 11211,成功后输入stats回车,应返回多行 key-value(如STAT version 1.6.27) - 如果返回空或直接断开,大概率是启动时用了
-l绑定到了特定 IP(比如-l 192.168.1.100),但你连的是127.0.0.1 - 检查日志:
journalctl -u memcached -n 50 --no-pager(systemd)或查看/var/log/messages中是否有failed to set rlimit类错误
ulimit -n(文件描述符限制)。memcached 的 -c 值受系统单进程最大打开文件数约束,CentOS 默认是 1024,哪怕你配了 -c 2048,也只会默默按 1024 运行。改法:在 /etc/security/limits.conf 加 memcached soft nofile 65536,并确保 systemd service 文件里有 LimitNOFILE=65536。










