`
ssxxjjii
  • 浏览: 950444 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

查看、分析memcached使用状态

 
阅读更多

访问量上升,数据库压力大,怎么办?好办法是在中间挡一层缓存!这个缓存要求高效,不能比数据库慢,否则服务质量受影响;如果能把数据用hash打散存储到硬盘,也是可以的,不过在内存越来越便宜的今天,还是使用内存吧!

    mysql也有自己的缓存,也是存储在内存的,但是有一个说法是:

以下是引用片段:

只能有一个实例
意味着你能存储内容的上限就是你服务器的可用内存,一台服务器能有多少内存?你又能存多少呢?

只要有写操作,mysql的query cache就失效
只要数据库内容稍有改变,那怕改变的是其他行,mysql的query cache也会失效

    再说,如果mysql都抗不住了,怎么还能指望它提供的缓存呢?

    所以我可以使用memcached了!他的好处和如何用可以参考:

以下是引用片段:

1:《Memcache和mysql交互流程操作原理

2:《让memcached和mysql更好的工作

    开发时面对需求是个麻烦事,更漫长而闹心的是维护,所以我更关心的是memcached运行中的情况。还好的是,memcached的作者给我们提供查看运行情况的命令。主要是“stats”,使用方法为 “telnet ip 端口号”,登录后使用“stats”命令。

    然后你可以看见很多内容,具体可以参考:《memcacche stats

以下是引用片段:

pid = process id
uptime = number of seconds since the process was started
time = current time
version = memcached version
rusage_user = seconds the cpu has devoted to the process as the user
rusage_system = seconds the cpu has devoted to the process as the system
curr_items = total number of items currently in memcache
total_items = total number of items that have passed through the cache
bytes = total number of bytes currently in use by curr_items
curr_connections = total number of open connections to memcached
connection_structures = ???
cmd_get = total GET commands issued to the server
cmd_set = total SET commands issued to the server
get_hits = total number of times a GET command was able to retrieve and
return data
get_misses = total number of times a GET command was unable to retrieve and
return data
bytes_read = total number of bytes input into the server
bytes_written = total number of bytes written by the server
limit_maxbytes = total storage bytes available to the server.

    着重说一下几个对观测很有用的项。

    limit_maxbytes、bytes

    memcached在存储的时候是可以设置失效时间的,但如果存储已经满了,那旧数据即使没有到过期时间,也会被移除。所以需要观察memcached存储是否已经满了,同时这对扩容也是有意义的参考。limit_maxbytes即总的存储大小,而bytes就是已经使用的大小,从这两个数据就可以看出在memcached启动时,我们为它分配的内存是否足够使用。

    cmd_get、cmd_set

    memcached启动后,我们对它一共做了多少次读取操作呢?从这两个参数可以观察出来。

    get_hits、get_misses

    使用memcached后,我们需要评估我们使用的策略是否合理。不能够使用中间缓存后,后端的数据库还是有较大的访问量,这样的话中间缓存就变得没有意义了。get_hits表示命中了多少次读取,即来memcached取到了多少有效数据;get_misses表示没有命中的次数,即此次来取数据的时候,memcached并没有你所查询的数据。如果没有清零统计数据的话,cmd_get = get_hits + get_misses。

    memcached 的状态查询还有其它的命令,可以参考:《Memcached的stats命令

    如下:

stats reset
清空统计数据

stats malloc
显示内存分配数据

stats maps
这个不太确定,看源代码是把/proc/self/maps的数据显示出来。

stats cachedump slab_id limit_num
显示某个slab中的前limit_num个key列表,显示格式如下
ITEM key_name [ value_length b; expire_time|access_time s]
其中,memcached 1.2.2及以前版本显示的是  访问时间(timestamp)
1.2.4以上版本,包括1.2.4显示 过期时间(timestamp)
如果是永不过期的key,expire_time会显示为服务器启动的时间

stats cachedump 7 2
ITEM copy_test1 [250 b; 1207795754 s]
ITEM copy_test [248 b; 1207793649 s]

stats slabs
显示各个slab的信息,包括chunk的大小、数目、使用情况等

stats items
显示各个slab中item的数目和最老item的年龄(最后一次访问距离现在的秒数)

stats detail [on|off|dump]
设置或者显示详细操作记录

参数为on,打开详细操作记录
参数为off,关闭详细操作记录
参数为dump,显示详细操作记录(每一个键值get、set、hit、del的次数)

stats detail dump
PREFIX copy_test2 get 1 hit 1 set 0 del 0
PREFIX copy_test1 get 1 hit 1 set 0 del 0
PREFIX cpy get 1 hit 0 set 0 del 0

分享到:
评论

相关推荐

    memcached 命令行状态全解

    本文将介绍如何使用 Telnet 命令来查看 Memcached 的运行状态。 一、Telnet 命令 Telnet 是一个基本的网络协议,用于远程登录和查看服务器的状态。我们可以使用 Telnet 命令来连接 Memcached 服务器,并查看其运行...

    memcached监视工具,有图有像,动态查看各种数据

    描述中的“有图有像,动态查看各种数据”意味着该监视工具提供可视化界面,以图形和图像的形式展示memcached的各种运行数据,如命中率、内存使用情况、连接数等,并且这些数据显示是动态更新的,以便用户可以实时...

    memcached源代码分析

    ### Memcached源代码分析 #### 一、Memcached概述与背景 Memcached是一个高效、开源、分布式的内存对象缓存系统,旨在通过减轻数据库负担,加速动态Web应用程序的响应速度。它通过在内存中存储键值对的形式缓存...

    memcached分析-main

    通过对memcached的线程模型和网络事件处理的分析,我们可以看到其高效的设计:主线程与工作线程的分离,确保了连接建立的快速响应和连接处理的并发性。libevent的事件驱动模型,则使得memcached能够灵活、高效地处理...

    Memcached 内存分析、调优、集群

    ### Memcached内存分析、调优、集群 #### 1. Memcached背景 Memcached是一款高性能的分布式内存对象缓存系统,旨在通过减轻数据库负载来加速动态Web应用的响应速度。它通过在内存中缓存数据和对象来减少读取数据库...

    探讨:如何通过stats命令分析Memcached的内部状态

    通过`stats`命令,我们可以全面地监控和分析Memcached的性能、内存使用、连接状态以及数据访问模式。这对于优化缓存策略、调整内存分配、排查故障以及确保服务稳定性都极其重要。定期检查这些指标,可以及时发现并...

    Memcached内存分析、调优、集群

    ### Memcached内存分析、调优、集群:深入理解与实践 #### 1. Memcached背景与概述 Memcached是一款高性能的分布式内存缓存服务器,它最初由LiveJournal的运营人员开发,现已成为开源社区中不可或缺的一部分。其...

    Memcached 统计与监控

    对于一些特殊的需求,可以编写自定义脚本来定期抓取Memcached的状态信息,并进行数据分析或告警处理。例如,使用Python脚本结合requests库来实现自动化的监控任务。 #### 六、总结 通过上述方法,我们可以有效地...

    MemCacheD Manager

    2. **实时监控**:该工具能够实时展示MemCacheD的运行状态,包括缓存命中率、内存占用、连接数、请求数等关键指标,便于管理员了解系统的健康状况和性能瓶颈。 3. **性能调优**:通过MemCacheD Manager,用户可以...

    监控memcached运行情况

    5. **源码分析**:对于深入理解Memcached的工作原理,有时需要查看其源码。这可以帮助我们识别性能瓶颈,或者定制化监控解决方案。 6. **扩展性与优化**:当单个Memcached实例无法满足需求时,可能需要考虑集群部署...

    linux下memcached的启动/结束的方式

    要检查Memcached服务的状态,使用: ```bash sudo systemctl status memcached ``` 如果需要停止Memcached服务,运行: ```bash sudo systemctl stop memcached ``` 除了使用`systemctl`,还可以使用`service`...

    Memcached缓存技术资料源码

    本文将深入探讨Memcached的基本概念、工作原理、安装配置、使用方法以及源码分析。 **一、Memcached基本概念** 1. **缓存**: 缓存是一种存储技术,用于临时存储频繁访问的数据,减少对后端慢速存储(如数据库)的...

    Getting started with memcached

    2. **监控与调优**:利用监控工具定期检查Memcached的状态,及时发现问题并进行优化。 3. **安全性考虑**:对于公开的Memcached实例,应采取措施防止未授权访问,比如限制访问IP、使用加密通信等。 #### 八、案例...

    Memcached缓存机制 用好Cache,优化应用

    2. **第三方工具**:例如,文章中提到的`MemCacheDManager`是一个用于监控和管理Memcached的工具,可以更直观地查看和分析Memcached的运行状态。 3. **日志分析**:启用日志功能,记录操作详情,便于后期分析问题。 ...

    Memcached深度分析.docx

    2. **数据共享**:在分布式系统中,Memcached作为服务器间的数据共享媒介,如SSO(单点登录)系统中存储登录状态数据。 3. **非持久化存储**:由于Memcached的数据存储在内存中,断电或进程结束会导致数据丢失,...

    tomcat8+memcached session共享

    在分布式系统中,session共享是一个重要的问题,因为用户在访问不同的服务器节点时,需要保持登录状态和其他会话信息的一致性。Memcached作为一个高性能的分布式内存对象缓存系统,常被用来解决这个问题。 描述中...

Global site tag (gtag.js) - Google Analytics