Memcached 可观测性最佳实践

    banner.jpg

    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 。示例如下:

    cp memcached.conf.sample memcached.conf
    

    调整 memcached.conf 内容如下:

    [[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 即可。

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

    联系我们

    加入社区

    微信扫码
    加入官方交流群

    立即体验

    在线开通,按量计费,真正的云服务!

    立即开始

    选择观测云版本

    代码托管平台