在 Linux 系统中,Memcached 作为一款高性能的内存对象缓存系统,广泛应用于减轻数据库负载、提升应用响应速度,有效查看 Memcached 的运行状态、资源占用及数据分布,是运维和开发人员日常维护的重要工作,本文将详细介绍在 Linux 环境下查看 Memcached 状态的多种方法、关键指标解读及实用技巧。

基础连接与状态查看
使用 telnet 或 nc 查看实时状态
Memcached 默认监听 11211 端口,通过 telnet 或 netcat(nc) 工具可直接连接并执行命令,查看 Memcached 核心状态最常用的命令是 stats,它会返回当前缓存的各项运行指标。
操作示例:
telnet 127.0.0.1 11211 stats
执行后,Memcached 会返回类似以下的多行统计信息:
pid: Memcached 进程 IDuptime: 服务器运行时间(秒)time: 服务器当前时间戳version: Memcached 版本号curr_items: 当前缓存中存储的 item 数量total_items: 自启动以来存储的 item 总数bytes: 当前缓存占用的内存字节数curr_connections: 当前活跃的连接数total_connections: 自启动以来的总连接数cmd_get: 总读取命令次数cmd_set: 总写入命令次数get_hits: 读取命中次数get_misses: 读取未命中次数evictions: 因内存不足被淘汰的 item 数量(高内存压力时需关注)
若需退出,输入 quit 即可。
使用 printf 替代 telnet 实现非交互式查询
在脚本自动化场景中,可通过 printf 发送命令并直接获取结果,避免交互式操作。
printf "stats\r\n" | nc 127.0.0.1 11211
printf 中的 \r\n 是 Memcached 协议要求的换行符,确保命令正确解析。

高级状态与详细信息查看
查看 slab 分配器状态(stats slabs)
Memcached 采用 slab 分配策略管理内存,不同大小的 item 被分配到不同的 slab class 中,通过 stats slabs 可查看各 slab 的内存使用情况,帮助定位内存碎片或分配不均问题。
返回信息包括:
chunk_size: 每个 item 的大小chunks_per_page: 每个 slab 页面包含的 chunk 数量total_pages: 该 slab 分配的总页数used_chunks: 已使用的 chunk 数量free_chunks: 空闲 chunk 数量free_chunks_end: 页面末尾的空闲 chunk 数量
若发现某个 slab 的 used_chunks 接近 total_pages * chunks_per_page,而其他 slab 空闲较多,可能需要调整 -f 参数(chunk 大小增长因子)优化内存分配。
查看 item 详细信息(stats items + stats cachedump)
需查看缓存中具体存储的 item 时,可结合 stats items 和 stats cachedump 命令。
stats items: 显示各 slab class 中 item 的数量和过期时间统计。stats cachedump <slab_id> <limit>: 导出指定 slab class 中的 item(limit控制导出数量,0 表示全部)。
示例:
stats items # 查看 slab ID stats cachedump 1 10 # 导出 slab ID=1 的前 10 个 item
注意:stats cachedump 可能暴露缓存数据敏感信息,仅建议在测试环境或安全可控环境下使用。

查看内存使用详情(stats malloc)
Memcached 底层依赖操作系统的内存分配器(如 glibc 的 malloc),通过 stats malloc 可查看内存分配的底层细节,包括:
total_alloc: 总分配内存total_free: 总释放内存used_memory: 实际使用的内存(与stats返回的bytes一致)rlimit_max: 进程内存限制(可通过ulimit调整)
日志与监控工具集成
查看 Memcached 日志
Memcached 的日志输出通常通过 syslog 管理,配置文件(如 /etc/memcached.conf)中的 -l(监听地址)、-p(端口)、-v(详细日志)等参数会影响日志内容,实时查看日志可使用:
tail -f /var/log/syslog | grep memcached
或直接查看 Memcached 进程的标准输出(若前台运行)。
结合监控工具实现可视化
在生产环境中,常通过 Prometheus + Grafana 或 Zabbix 等工具对 Memcached 进行可视化监控,通过 memcached_exporter 采集 stats 数据,并在 Grafana 中预设仪表盘,实时展示命中率、内存使用率、连接数等关键指标。
常见问题排查
- 命中率低:通过
get_hits / (get_hits + get_misses)计算命中率,若低于 80%,需检查缓存 key 设计、过期时间设置或业务逻辑是否合理。 - 内存淘汰频繁:关注
evictions指标,若持续较高,可考虑增加-m(最大内存)参数或优化 item 大小分布。 - 连接数过多:
curr_connections过高可能导致性能下降,可通过-c(最大连接数)参数调整,并检查应用是否存在未释放连接的问题。
通过以上方法,可全面掌握 Memcached 的运行状态,及时发现并解决性能瓶颈,确保缓存服务稳定高效,实际操作中,需结合业务场景选择合适的查看方式,并定期分析统计数据以优化配置。
















