直接用包管理器安装Memcached,需先确保libevent已安装(Ubuntu/Debian执行sudo apt install libevent-dev,CentOS/RHEL执行sudo yum install libevent libevent-devel),否则因缺少共享库而无法启动;安装后须正确配置启用状态与监听地址,并用nc+stats验证服务可用性。

直接用包管理器装,别源码编译——除非你真需要 SASL 认证或特定版本。
先确认 libevent 已就位,否则 memcached 根本起不来
memcached 依赖 libevent 处理异步 I/O,缺它会报错:error while loading shared libraries: libevent-2.1.so.7: cannot open shared object file。这不是配置问题,是根本跑不起来。
- Ubuntu/Debian:运行
dpkg -l | grep libevent,若无输出或只有libevent-1.4这类老版本,执行sudo apt install -y libevent-dev(注意是libevent-dev,不是libevent) - CentOS/RHEL:运行
rpm -qa | grep libevent,缺失或过旧时执行sudo yum install -y libevent libevent-devel(RHEL 8+ 改用dnf) - 源码编译必须装
libevent-devel(含头文件),否则./configure直接失败,提示找不到event.h
用 apt/yum 安装,但得知道默认配置在哪、怎么启用
包管理器安装后,服务可能“装了却没启动”,因为默认配置常被禁用或监听地址不对。
- Ubuntu/Debian:配置文件是
/etc/default/memcached,必须把ENABLED=yes改成ENABLED=yes(注意大小写,yes小写才生效) - CentOS/RHEL:配置在
/etc/sysconfig/memcached,检查OPTIONS是否包含-l 127.0.0.1;若为空,systemctl start memcached会静默失败 - 装完立刻验证:
systemctl is-active memcached应返回active;若报Unit memcached.service not found,说明包名错了(如 CentOS 上误装memcached-server)
改 /etc/memcached.conf 时,一个字母错就静默失败
这个文件不支持 JSON、YAML 或环境变量,所有参数靠行首加 - 的命令行风格写法。写错参数名(比如把 -l 写成 -I)、漏空格、多加引号,都会导致服务启动失败且不报错。
-
-m 64:分配 64MB 内存,别设太大——2GB 内存的 VPS 上设-m 2048很可能触发 OOM Killer 杀进程 -
-l 127.0.0.1,::1:逗号分隔多个地址;想外网访问,加-l 0.0.0.0,但必须同步关 UDP:-U 0,并配防火墙(如ufw allow 11211)防反射攻击 -
-c 1024:默认连接数偏小,高并发建议调到4096,同时补系统限制:echo 'memcached soft nofile 8192' >> /etc/security/limits.conf - 注释掉
-S(SASL)除非真有认证需求,否则启动卡在Failed to initialize SASL
验证连通性不能只靠 telnet
telnet 127.0.0.1 11211 只能测端口通不通,不代表缓存可用。真正要确认,得发协议指令。
- 用
nc 127.0.0.1 11211进入交互,输入stats回车,应返回多行STAT version 1.6.27类信息 - 如果返回空或断开,大概率是
-l绑定了特定 IP(如-l 192.168.1.100),但你连的是127.0.0.1 - 查日志:
journalctl -u memcached -n 50 --no-pager,重点看有没有failed to set rlimit或cannot bind类错误
最容易被忽略的是系统级资源限制和 UDP 安全配置——哪怕配置文件语法全对,nofile 没调高,或 -U 0 没加,服务在高负载下也会悄无声息地降级或被 kill。











