Memcached 可观测性最佳实践

Memcached 介绍

Memcached 是一个高性能、分布式的内存对象缓存系统,用于动态 Web 应用程序以减轻数据库负载。它通过将数据缓存在内存中,极大地减少了数据库查询的次数,从而提高应用程序的响应速度。Memcached 最早由 LiveJournal 的 Danga Interactive 开发,目前已成为许多大型互联网公司使用的基础技术之一。

Memcached 的监控是保障应用性能和稳定性的关键措施,通过实时跟踪缓存的命中率、内存使用、延迟等指标,可以优化缓存策略、识别性能瓶颈、及时排查故障、进行容量规划,确保数据一致性,并为业务分析提供数据支持,从而提升用户体验和系统可靠性。

观测云

观测云是一款专为 IT 工程师打造的全链路可观测产品,它集成了基础设施监控、应用程序性能监控和日志管理,为整个技术栈提供实时可观察性。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用内函数的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。

前置条件

  • Memcached 版本 >= 1.5.0

部署 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。

登录观测云控制台,在 集成 -> DataKit 选择对应安装方式,当前采用 Linux 主机部署 DataKit 。

开启 Memcached 采集器

进入 DataKit 安装目录下的 conf.d/db 目录,复制 memcached.conf.sample 并命名为 memcached.conf 。示例如下:

bash 复制代码
cp memcached.conf.sample memcached.conf

调整 memcached.conf 内容如下:

shell 复制代码
[[inputs.memcached]]
  ## Servers' addresses.
  servers = ["localhost:11211"]
  # unix_sockets = ["/var/run/memcached.sock"]

  ## Set true to enable election
  election = true

  ## Collect extra stats
  # extra_stats = ["slabs", "items"]

  ## Collect interval.
  # 单位 "ns", "us" (or "µs"), "ms", "s", "m", "h"
  interval = "10s"

[inputs.memcached.tags]
  # some_tag = "some_value"
  # more_tag = "some_other_value"
  # ...

配置完成后重启 DataKit 即可。

bash 复制代码
# 终端执行命令
datakit service -R

关键指标

指标 描述 单位
accepting_conns 服务器是否正在接受连接 count
auth_cmds 处理的认证命令数量,包括成功或失败的情况 count
auth_errors 认证失败的次数 count
bytes 当前用于存储项目的字节数 B
bytes_read 此服务器从网络读取的总字节数 B
bytes_written 此服务器发送到网络的总字节数 B
cas_badval 找到键但CAS值不匹配的CAS操作次数 count
cas_hits 成功的CAS请求次数 count
cas_misses 针对缺失键的CAS请求次数 count
conn_yields 由于达到 -R 限制而让出给其他连接的次数 count
connection_structures 服务器分配的连接结构数量 count
curr_connections 打开的连接数 count
curr_items 当前存储的项目数量 count
decr_hits 成功的decr请求次数 count
decr_misses 针对缺失键的decr请求次数 count
delete_hits 导致项目被删除的删除请求次数 count
delete_misses 针对缺失键的删除请求次数 count
evicted_unfetched 从LRU中驱逐但从未被get/incr/append等操作触及的项目数量 count
evictions 为新项目腾出内存而从缓存中移除的有效项目数量 count
expired_unfetched 从LRU中取出但在过期前从未被get/incr/append等操作触及的项目数量 count
get_hits 已请求并找到存在的键的数量 count
get_misses 已请求但未找到的项目数量 count
hash_bytes 当前哈希表使用的字节数 B
hash_is_expanding 指示哈希表是否正在扩展到新大小 count
hash_power_level 哈希表当前的大小倍数 count
incr_hits 成功的incr请求次数 count
incr_misses 针对缺失键的incr请求次数 count
limit_maxbytes 此服务器允许用于存储的字节数 B
listen_disabled_num 服务器因达到最大连接数(maxconns)而停止接受新连接的次数 count

场景视图

登录观测云控制台,点击「场景」 -「新建仪表板」,添加视图。

监控器(告警)

memcached 连接数异常

简要描述:Memcached 连接数异常通常表示当前服务器的连接数超过预期或达到了最大连接限制。这可能会导致新连接被拒绝,从而影响应用程序对缓存数据的访问。及时监控和处理连接数异常有助于保障服务的稳定性和响应能力。

memcached 命中率异常

简要描述:Memcached 命中率异常表明缓存的请求命中率低于正常水平,这通常意味着更多的请求需要直接访问数据库,可能导致延迟增加和性能下降。通过监控和优化缓存命中率,可以提升系统响应速度和资源利用率。

memcached 驱逐对象异常

简要描述:Memcached 驱逐对象异常指的是缓存中对象被频繁驱逐,通常是因为内存不足而需要腾出空间。这可能会导致缓存命中率下降,从而增加对数据库的访问压力。监控并优化驱逐策略,有助于提升缓存的有效利用率和系统的整体性能。

总结

通过观测云统一采集、监控 Memcached 的关键指标,如缓存命中率、内存使用情况、延迟等,可以帮助我们优化缓存策略、识别性能瓶颈并及时排查故障,从而保障系统性能和稳定性。通过实时追踪这些指标,可以有效进行容量规划,确保数据一致性,并为业务分析提供重要支持,从而提升用户体验和系统可靠性。

相关推荐
骑着王八撵玉兔3 天前
【分布式缓存中间件Memcached原理与应用】
java·数据库·分布式·后端·缓存·中间件·memcached
fobwebs11 天前
Debian系统宝塔面板安装LiteSpeed Memcached(LSMCD)
debian·memcached·宝塔·lsmcd·litespeed
2301_7931393322 天前
光控资本:新能源汽车持续渗透 充电需求将保持快速增长
leetcode·microsoft·zookeeper·big data·memcached
2301_7931393322 天前
光控资本:锂电排产上行 AI手机有望快速渗透
microsoft·zookeeper·tensorflow·big data·memcached
IPdodo全球网络服务22 天前
PC版Facebook无法播放视频的原因与解决方法
数据库·缓存·memcached
信徒_1 个月前
Redis 和 Memcached 的区别
数据库·redis·memcached
CN.LG1 个月前
浅谈C#库之Memcached
数据库·缓存·memcached
Mephisto.java1 个月前
【大数据学习 | Spark-Core】Spark的分区器(HashPartitioner和RangePartitioner)
大数据·elasticsearch·oracle·spark·sqlite·flume·memcached
胡西风_foxww2 个月前
linux下编译安装memcached
linux·数据库·缓存·编译·安装·memcached·libevent