Memcached内存分析、调优、集群.ppt
《Memcached内存分析、调优、集群.ppt》由会员分享,可在线阅读,更多相关《Memcached内存分析、调优、集群.ppt(71页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、导航 1.Memcached背景 2.Memcached使用:安装、启动、命令、统计 3.深入Memcached内部:slab、page、item 4.Memcached分布式:一致性Hash 5.key-value系统比较:集群、性能对比 6.Memcached客户端Memcached是什么memcached由LiveJournal运营人员开发memcached是高性能的分布式内存缓存服务器,开源 协议简单 基于libevent时间处理:epoll/kqueue 内置内存存储方式:slab/LRU目前用户LiveJournalFacebookmixiDiggWikipediaVoxfaceb
2、ook200 memcached servers16GB 四核 AMD643TB cache dataMemcached支持语言C/C+libmemcachedlibmemcacheapr_memcachememcaheclientlibketamaPHPPECL/memcachedPECL/memcachePHP libmemcachedJavaspymemcachedJava memcached client/dangamemcache-client-forjava/taobaoPythonRubyPerl.NETMySQLPostgreSQLErlangLuaLisp参考:http:/
3、http:/www.monkey.org/provos/libevent/./configure -prefix=/usr/localmakesudo make installmemcached: http:/memcached.org/./configure -with-libevent=/usr/localmakemake install安装成功memcached -h主要启动参数启动方式:-d 以守护程序(daemon)方式运行-u root 指定用户,如果当前为 root ,需要使用此参数指定用户-P /tmp/a.pid保存PID到指定文件内存设置:-m 1024 数据内存数量,不包
4、含memcached本身占用,单位为 MB-M 内存不够时禁止LRU,报错-n 48初始chunk=key+suffix+value+32结构体,默认48字节-f 1.25 增长因子,默认1.25-L启用大内存页,可以降低内存浪费,改进性能连接设置:-l 127.0.0.1 监听的 IP 地址,本机可以不设置此参数-p 11211 TCP端口,默认为11211,可以不设置-U 11211UDP端口,默认为11211,0为关闭并发设置:-c 1024最大并发连接数,默认1024,最好是200-t 4线程数,默认4。由于memcached采用NIO,所以更多线程没有太多作用-R 20每个event
5、连接最大并发数,默认20-C禁用CAS命令(可以禁止版本计数,减少开销)例如:/usr/local/bin/memcached -d -u nobody -m 1024 -p 11210 -l 10.11.12.70 -P /opt/memcached/pid/m11210.piddaemontools启动工具 memcached有可能会死掉(mixi.jp经验) 监视memcached进程并自动启动 启动脚本样例:run.sh参考:http:/cr.yp.to/daemontools.html#!/bin/shif f /etc/sysconfig/memcached ;then . /et
6、c/sysconfig/memcachedfiexec 2&1exec memcached p $PORT u $USER m $CACHESIZE c $MAXCONN $OPTIONSmemcached调试-v+输出error/warning-vv+输出命令/响应-vvv +输出内部状态10_10_82_80 # memcached -d -u root -m 1024 -p 11210 -vvv10_10_82_80 # memcached -d -u root -m 1024 -p 11211 vvvslab class 1: chunk size 96 perslab 10922sl
7、ab class 2: chunk size 120 perslab 8738.slab class 42: chunk size 1048576 perslab 136 server listening (auto-negotiate)37 send buffer was 126976, now 26843545637 server listening (udp)37 server listening (udp)37 server listening (udp)37 server listening (udp)38 new auto-negotiating client connection
8、38: Client using the ascii protocol38 stats38 END38 quit38 connection closed.telnet localhost 11210/11211statsget abcquitmemcached命令列表 存储命令set/add/replace/append/prepend/cas 读取命令get=bget?/gets 删除命令delete 计数命令incr/decr 统计命令stats/settings/items/sizes/slabs 工具memcached-tool存储命令commandset无论如何都进行存储add只有数
9、据不存在时进行添加repalce只有数据存在时进行替换append往后追加:append datablock ?prepend往前追加:prepend datablock cas按版本号更改key字符串,250个字符,不包含空格和控制字符flags客户端用来标识数据格式的数值,如json,xml,压缩等exptime存活时间s,0为永远,30天为unixtimebytesbyte字节数,不包含rn,根据长度截取存/取的字符串,可以是0,即存空串datablock文本行,以rn结尾,当然可以包含r或nstatusSTORED/NOT_STORED/EXISTS/NOT_FOUNDERROR/CL
10、IENT_ERROR/SERVER_ERROR服务端会关闭连接以修复格式: rnrnrn存储命令set/add/replaceset liu 32 0 4javaSTORED/正确get liuVALUE abc 32 4javaENDset liu 32 0 4cplusCLIENT_ERROR bad data chunkERROR/长度错误set liu 32 0 4javaSTOREDadd liu 32 0 5cplusNOT_STORED/已存在不能addget liuVALUE abc 32 4javaENDadd song 32 0 5cplusSTORED/不存在可以adds
11、et liu 32 0 4javaSTOREDreplace liu 32 0 5cplusSTORED/已存在可以replaceget liuVALUE cplus 32 5liuENDreplace yang 32 0 5cplusNOT_STORED/不存在不能replacedatablock长度必须正确add只能添加不存在的keyreplace只能替换已有的key读取命令get/getsget liu song yangVALUE liu 32 4javaVALUE song 32 5cplusEND/查询多个键值gets liuVALUE liu 32 4 12javaEND/取得版
12、本号replace liu 32 0 4javaSTORED/增加版本号get liuVALUE liu 32 4javaENDgets liuVALUE liu 32 4 13javaEND格式: *rnVALUE rnrnVALUE rnrnENDrncommand: get普通查询,gets用于查询带版本的值版本号+1检查存储命令cascas即check and set,只有版本号相匹配时才能存储,否则返回EXISTS设计意图:解决多客户端并发修改同一条记录的问题,防止使用经过改变了的value/key对cas liu 32 0 5 12cplusEXISTSgets liuVALUE
13、liu 32 4 13javaEND/版本号不同不修改cas liu 32 0 5 13cplusSTOREDgets liuVALUE liu 32 5 14cplusEND/版本号相同才修改当前版本号为13,按12不能修改当前版本号为13,按13可以修改计数命令incr/decr格式:incr/decr 要求:key必须存在,value必须是数字set count 32 0 1 1STOREDincr count 89decr count 27delete count DELETEDincr count 1NOT_FOUNDincr liu 2CLIENT_ERROR cannot inc
14、rement or decrement non-numeric value实现计数器key不存在不能计数value不是数字不能计数删除命令delete格式:delete DELETErntime: 秒数或Unixtime,在time时间内不能add或replace,但能set,不能get。过期后才能够重新set有效并能getdelete liuDELETEDget liuEND统计命令statsstatsSTAT pid 23178STAT uptime 1039318STAT time 1292036037STAT version 1.4.2STAT pointer_size 64STAT
15、rusage_user 1011.574217STAT rusage_system 1677.713948STAT curr_connections 114STAT total_connections 73801STAT connection_structures 149STAT cmd_get 79114939STAT cmd_set 27302514STAT cmd_flush 0STAT get_hits 79114939STAT get_misses 24322507STAT delete_misses 133928STAT delete_hits 402569STAT incr_mi
16、sses 0STAT incr_hits 0STAT decr_misses 0STAT decr_hits 0STAT cas_misses 0STAT cas_hits 0STAT cas_badval 0STAT auth_cmds 0STAT auth_errors 0STAT bytes_read 59348603658STAT bytes_written 425549797158STAT limit_maxbytes 4294967296STAT accepting_conns 1STAT listen_disabled_num 0STAT threads 4STAT conn_y
17、ields 0STAT bytes 3832761746STAT curr_items 2854731STAT total_items 27302514STAT evictions 18456987STAT reclaimed 0END格式:stats rnSTAT rnENDrnstats统计项名称描述pidMemcached进程IDuptimeMemcached运行时间,单位:秒timeMemcached当前的UNIX时间versionMemcached的版本号rusage_user该进程累计的用户时间,单位:秒rusage_system该进程累计的系统时间,单位:秒curr_connec
18、tions当前连接数量total_connectionsMemcached运行以来接受的连接总数connection_structuresMemcached分配的连接结构的数量cmd_get查询请求总数get_hits查询成功获取数据的总次数get_misses查询成功未获取到数据的总次数cmd_set存储(添加/更新)请求总数bytesMemcached当前存储内容所占用字节数bytes_readMemcached从网络读取到的总字节数bytes_writtenMemcached向网络发送的总字节数limit_maxbytesMemcached在存储时被允许使用的字节总数curr_items
19、Memcached当前存储的内容数量total_itemsMemcached启动以来存储过的内容总数evictionsLRU释放对象数,用来释放内存分析CPU占用是否高分析连接数是否太多分析命中率是否太低分析字节数流量分析对象数LRU频率stats settings查看设置stats settingsSTAT maxbytes 0STAT maxconns 1024STAT tcpport 11213STAT udpport 11211STAT inter NULLSTAT verbosity 0STAT oldest 0STAT evictions onSTAT domain_socket
20、NULLSTAT umask 700STAT growth_factor 1.25STAT chunk_size 48STAT num_threads 4STAT stat_key_prefix :STAT detail_enabled noSTAT reqs_per_event 20STAT cas_enabled yesSTAT tcp_backlog 1024STAT binding_protocol auto-negotiateSTAT item_size_max 1048576END名称描述maxbytes最大字节数限制,0无限制maxconns允许最大连接数tcpportTCP端口
21、udpportUDP端口interverbosity日志0=none,1=som,2=lotsoldest最老对象过期时间evictionson/off,是否禁用LRUdomain_socketsocket的domainumask创建Socket时的umaskgrowth_factor增长因子chunk_sizekey+value+flags大小num_threads线程数,可以通过-t设置,默认4stat_key_prefixstats分隔符detail_enabledyes/no,显示stats细节信息reqs_per_event最大IO吞吐量(每event)cas_enabledyes/
22、no,是否启用CAS,-C禁用tcp_backlogTCP监控日志auth_enabled_sasl yes/no,是否启用SASL验证stats items数据项统计stats itemsSTAT items:1:number 10922STAT items:1:age 350988STAT items:1:evicted 3829STAT items:1:evicted_nonzero 0STAT items:1:evicted_time 690209STAT items:1:outofmemory 0STAT items:1:tailrepairs 0STAT items:2:numbe
23、r 375734STAT items:2:age 898762STAT items:2:evicted 2661399STAT items:2:evicted_nonzero 0STAT items:2:evicted_time 142500STAT items:2:outofmemory 0STAT items:2:tailrepairs 0.STAT items:40:number 14STAT items:40:age 977359STAT items:40:evicted 25STAT items:40:evicted_nonzero 0STAT items:40:evicted_ti
24、me 60653STAT items:40:outofmemory 0STAT items:40:tailrepairs 0END名称描述number该slab中对象数,不包含过期对象ageLRU队列中最老对象的过期时间evictedLRU释放对象数evicted_nonzero设置了非0时间的LRU释放对象数evicted_time最后一次LRU秒数,监控频率outofmemory不能存储对象次数,使用-M会报错tailrepairs修复slabs次数reclaimed使用过期对象空间存储对象次数stats sizes对象数量统计stats sizesSTAT 96 10922STAT 12
25、8 375734STAT 160 200416STAT 192 816311STAT 224 8685STAT 256 3321STAT 288 3549STAT 320 826STAT 352 427END格式:STAT 注意:会锁定服务,暂停处理请求stats slabs区块统计stats slabsSTAT 1:chunk_size 96STAT 1:chunks_per_page 10922.STAT 40:chunk_size 1048576STAT 40:chunks_per_page 1STAT 40:total_pages 15STAT 40:total_chunks 15ST
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Memcached 内存 分析 调优 集群
限制150内