linux部署memcached需确保装得稳、配得准、连得对:先装libevent依赖并验证,再配置监听地址、内存、连接数及关闭udp,接着安装php扩展并测试连通性,最后用命令监控命中率与状态。

Linux 环境部署 Memcached 缓存服务器,核心目标不是“装上就行”,而是让缓存真正扛住流量、命中率高、不拖后腿。关键在三点:装得稳、配得准、连得对。下面分步骤讲清楚实操要点。
基础安装与依赖确认
别跳过依赖检查——90% 的启动失败都卡在这步。Memcached 必须依赖 libevent 处理异步 I/O,缺它直接报错“cannot open shared object file”。
- Ubuntu/Debian:运行
sudo apt install -y libevent-dev(注意是libevent-dev,不是libevent) - CentOS/RHEL:运行
sudo yum install -y libevent-devel(RHEL 8+ 改用dnf) - 验证是否就绪:
ldd $(which memcached) | grep event应输出正常路径 - 推荐用包管理器安装主程序:
sudo apt install memcached(Ubuntu)或sudo yum install memcached(CentOS),除非你明确需要 SASL 认证或特定版本才源码编译
配置文件修改与安全监听
默认配置往往不生效,尤其在 CentOS/RHEL 中,/etc/sysconfig/memcached 的 OPTIONS 为空时,服务会静默失败。务必手动写入参数,且语法必须严格:
- 监听地址只限本机:
-l 127.0.0.1,::1(禁用公网暴露,杜绝反射攻击风险) - 内存分配合理:
-m 512(512MB,建议不超过物理内存的 70%,2GB VPS 别设 -m 2048) - 连接数调高:
-c 4096(默认 1024 易瓶颈,同时补系统限制:echo 'memcached soft nofile 8192' >> /etc/security/limits.conf) - 关闭 UDP 端口:
-U 0(防止 DDoS 反射,生产环境必须关) - 配置文件不支持 JSON/YAML,所有参数以
-x value形式独占一行,拼写错误(如把-l写成-I)会导致服务无声退出
PHP 扩展集成与缓存验证
装完服务只是第一步,PHP 要能调用才算闭环。重点不是“装上扩展”,而是确保它能走通缓存链路:
- 安装 PHP 扩展:
sudo pecl install memcached,注意区分memcache(旧版)和memcached(新版,推荐) - 编辑
php.ini,添加:extension=memcached.so;可选加memcached.sess_prefix = "app_v1_"实现多应用隔离 - 验证加载:
php -m | grep memcached应有输出;再用php -i | grep memcached查看版本和选项 - 写个测试脚本:
$m = new Memcached(); $m->addServer('127.0.0.1', 11211); $m->set('test_key', 'ok', 30); var_dump($m->get('test_key'));,返回string(2) "ok"即通
简单监控与常见问题速查
上线后别当甩手掌柜,几个命令就能快速判断健康状态:
- 查看服务状态:
systemctl is-active memcached(应为active) - 查实时指标:
echo "stats" | nc 127.0.0.1 11211 | grep -E "(uptime|cmd_get|get_hits|evictions)",关注get_hits/cmd_get比值,高于 85% 算良好 - 内存被挤爆?看
evictions是否持续增长,是则需调大-m或优化 key 过期策略 - 连不上?先
telnet 127.0.0.1 11211,不通则检查防火墙(ufw allow 11211)、SELinux(setenforce 0或配策略)、监听地址是否写错











