Skip to content

Memcached内置工具

核心内置工具

1. memcached-tool

功能描述:memcached-tool是Memcached最常用的内置工具,用于监控Memcached服务器状态、统计信息和数据分布。

基本语法

bash
memcached-tool <host[:port]> [command]

常用命令

命令说明示例
stats显示服务器统计信息memcached-tool 127.0.0.1:11211 stats
stats settings显示服务器配置信息memcached-tool 127.0.0.1:11211 stats settings
stats items显示item统计信息memcached-tool 127.0.0.1:11211 stats items
stats slabs显示slab分配器统计信息memcached-tool 127.0.0.1:11211 stats slabs
stats sizes显示item大小分布memcached-tool 127.0.0.1:11211 stats sizes
display显示slab使用情况memcached-tool 127.0.0.1:11211 display
dump导出所有键值对memcached-tool 127.0.0.1:11211 dump
flush清空缓存memcached-tool 127.0.0.1:11211 flush

使用示例

bash
# 查看服务器基本统计信息
memcached-tool 127.0.0.1:11211 stats

# 查看slab分配情况
memcached-tool 127.0.0.1:11211 display

# 导出所有键值对memcached-tool 127.0.0.1:11211 dump > memcached_dump.txt

2. memcached

功能描述:Memcached服务器本身,同时也可以作为客户端工具使用。

基本语法

bash
memcached [options]

常用选项

选项说明示例
-h显示帮助信息memcached -h
-V显示版本信息memcached -V
-p指定监听端口memcached -p 11211
-m指定内存大小memcached -m 256
-c指定最大连接数memcached -c 4096
-t指定工作线程数memcached -t 4
-d以守护进程方式运行memcached -d
-u指定运行用户memcached -u memcached
-l指定监听地址memcached -l 0.0.0.0

使用示例

bash
# 启动Memcached服务
memcached -d -m 256 -c 4096 -t 4 -l 0.0.0.0

# 查看Memcached版本
memcached -V

3. telnet

功能描述:虽然telnet不是Memcached内置工具,但它是管理Memcached的常用工具,可以直接连接到Memcached服务并执行命令。

基本语法

bash
telnet <host> <port>

常用Memcached命令

命令说明示例
get获取键值get key
set设置键值set key 0 0 5 value
add添加键值(仅当键不存在)add key 0 0 5 value
replace替换键值(仅当键存在)replace key 0 0 5 newvalue
delete删除键值delete key
incr递增数值incr counter 1
decr递减数值decr counter 1
flush_all清空缓存flush_all
stats查看统计信息stats
version查看版本信息version
quit退出连接quit

使用示例

bash
# 连接到Memcached服务
telnet 127.0.0.1 11211

# 执行命令
get test_key
set test_key 0 0 5 hello
get test_key
stats
quit

监控工具

1. stats命令族

通过telnet或memcached-tool使用stats命令,可以获取Memcached的详细统计信息:

基本统计信息

bash
stats

输出示例:

STAT pid 12345
STAT uptime 3600
STAT time 1633046400
STAT version 1.6.12
STAT libevent 2.1.12-stable
STAT pointer_size 64
STAT rusage_user 0.123456
STAT rusage_system 0.654321
STAT max_connections 1024
STAT curr_connections 10
STAT total_connections 100
STAT rejected_connections 0
STAT connection_structures 12
STAT reserved_fds 20
STAT cmd_get 1000
STAT cmd_set 500
STAT cmd_flush 0
STAT cmd_touch 0
STAT get_hits 800
STAT get_misses 200
STAT delete_misses 10
STAT delete_hits 40
STAT incr_misses 0
STAT incr_hits 50
STAT decr_misses 0
STAT decr_hits 30
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 100000
STAT bytes_written 200000
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT slab_reassign_rescues 0
STAT slab_reassign_chunk_rescues 0
STAT slab_reassign_evictions_nomem 0
STAT slab_reassign_inline_reclaim 0
STAT slab_reassign_busy_items 0
STAT slab_reassign_busy_deletes 0
STAT slab_reassign_running 0
STAT slabs_moved 0
STAT lru_crawler_running 0
STAT lru_crawler_starts 10
STAT lru_maintainer_juggles 100
STAT malloc_fails 0
STAT log_worker_dropped 0
STAT log_worker_written 0
STAT log_watcher_skipped 0
STAT log_watcher_sent 0
STAT bytes 10000
STAT curr_items 50
STAT total_items 500
STAT slab_global_page_pool 0
STAT expired_unfetched 100
STAT evicted_unfetched 50
STAT evicted_active 0
STAT evictions 150
STAT reclaimed 200
STAT crawler_reclaimed 0
STAT crawler_items_checked 1000
STAT lrutail_reflocked 0
STAT moves_to_cold 200
STAT moves_to_warm 100
STAT moves_within_lru 50
STAT direct_reclaims 0
STAT lru_bumps_dropped 0
END

内存统计信息

bash
stats items

Slab统计信息

bash
stats slabs

大小统计信息

bash
stats sizes

调试工具

1. 详细日志模式

通过启动Memcached时添加-v选项,可以启用详细日志模式:

bash
# 基本日志
memcached -v

# 更详细日志
memcached -vv

# 最详细日志
memcached -vvv

2. 内存调试

使用libmemcached的内存调试工具:

bash
# 安装libmemcached-tools
sudo apt-get install libmemcached-tools

# 使用memstat查看内存使用情况
memstat --servers=127.0.0.1:11211

性能分析工具

1. memcached-top

功能描述:memcached-top是一个实时监控Memcached性能的工具,可以显示连接数、命中率、命令执行情况等。

安装方法

bash
gem install memcache-top

使用示例

bash
# 监控本地Memcached服务
memcache-top --servers=127.0.0.1:11211

# 监控多个Memcached服务
memcache-top --servers=127.0.0.1:11211,127.0.0.1:11212

2. memcached-stat

功能描述:memcached-stat是一个Python脚本,用于收集和展示Memcached的统计信息。

使用示例

bash
# 查看基本统计信息
memcached-stat --host=127.0.0.1 --port=11211

# 查看详细统计信息
memcached-stat --host=127.0.0.1 --port=11211 --verbose

工具使用最佳实践

1. 监控最佳实践

  • 定期监控:设置定期监控任务,收集Memcached统计信息
  • 设置告警:根据监控指标设置告警阈值,及时发现问题
  • 趋势分析:对监控数据进行趋势分析,预测潜在问题
  • 多维度监控:从连接数、命中率、内存使用率等多个维度进行监控

2. 调试最佳实践

  • 逐步排查:从基本指标开始,逐步深入分析问题
  • 日志分级:根据需要调整日志级别,避免日志过多影响性能
  • 测试环境验证:在测试环境中复现和调试问题
  • 记录调试过程:详细记录调试过程和结果,便于后续分析

3. 管理最佳实践

  • 自动化管理:使用脚本自动化Memcached的启动、停止和配置
  • 版本管理:定期更新Memcached版本,修复安全漏洞
  • 配置备份:定期备份Memcached配置文件
  • 文档化:记录Memcached的部署架构、配置和维护流程

常见问题及解决方案

1. memcached-tool命令不存在

症状:执行memcached-tool命令时提示"command not found"

解决方案

bash
# Debian/Ubuntu
sudo apt-get install libmemcached-tools

# CentOS/RHEL
sudo yum install libmemcached-tools

# 手动编译安装
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz
tar -xzf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure
make
sudo make install

2. telnet连接Memcached失败

症状:执行telnet命令时提示"Connection refused"

解决方案

  1. 检查Memcached服务是否正在运行

    bash
    ps aux | grep memcached
  2. 检查Memcached监听地址和端口

    bash
    netstat -tlnp | grep memcached
  3. 检查防火墙设置

    bash
    iptables -L -n
  4. 检查SELinux设置

    bash
    sestatus

3. stats命令返回错误

症状:执行stats命令时返回错误

解决方案

  1. 检查Memcached服务状态
  2. 检查网络连接
  3. 检查Memcached版本兼容性
  4. 重启Memcached服务

工具比较

工具功能易用性扩展性适用场景
memcached-tool监控、管理、统计日常管理和监控
telnet直接执行命令调试和手动操作
memcached-top实时监控实时性能监控
memstat内存分析内存问题调试
memcached-stat统计信息收集统计数据导出和分析

常见问题(FAQ)

Q1: memcached-tool和telnet有什么区别?

A1: memcached-tool是专门为Memcached设计的管理工具,提供了更友好的输出格式和更丰富的功能;telnet是通用的网络工具,可以直接执行Memcached命令,但输出格式较为原始。

Q2: 如何实时监控Memcached的性能?

A2: 可以使用以下工具:

  • memcached-top:实时显示Memcached性能指标
  • Prometheus + Grafana:长期监控和可视化
  • 自定义脚本:通过定期调用stats命令收集数据

Q3: 如何导出Memcached的所有数据?

A3: 可以使用以下方法:

  • memcached-tool dump:导出所有键值对
  • memdump命令:libmemcached-tools提供的导出工具
  • 自定义脚本:通过遍历键的方式导出数据

Q4: 如何查看Memcached的详细配置?

A4: 可以使用以下方法:

  • 查看启动命令:ps aux | grep memcached
  • 查看配置文件:如果使用了配置文件启动
  • 使用stats settings命令:查看运行时配置

Q5: 如何调试Memcached性能问题?

A5: 调试步骤:

  1. 使用memcached-tool或stats命令查看基本统计信息
  2. 分析命中率、响应时间等关键指标
  3. 检查内存使用率和eviction情况
  4. 查看连接数和命令执行情况
  5. 启用详细日志,分析具体命令
  6. 使用性能分析工具定位瓶颈