Memcached内存分析、调优、集群课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Memcached内存分析、调优、集群课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Memcached 内存 分析 调优 集群 课件
- 资源描述:
-
1、Memcached内存分析、调优、集群刘中兵 搜狐TPC v1 2019/12/12lzbboxhotmail2导航 1.Memcached背景 2.Memcached使用:安装、启动、命令、统计 3.深入Memcached内部:slab、page、item 4.Memcached分布式:一致性Hash 5.key-value系统比较:集群、性能对比 6.Memcached客户端1.Memcached背景4Memcached是什么memcached由LiveJournal运营人员开发memcached是高性能的分布式内存缓存服务器,开源协议简单基于libevent时间处理:epoll/kque
2、ue内置内存存储方式:slab/LRU目前用户LiveJournalFacebookmixiDiggWikipediaVox5facebook200 memcached servers16GB 四核 AMD643TB cache data6Memcached支持语言C/C+libmemcachedlibmemcacheapr_memcachememcaheclientlibketamaPHPPECL/memcachedPECL/memcachePHP libmemcachedJavaspymemcachedJava memcached client/dangamemcache-client-f
3、orjava/taobaoPythonRubyPerl.NETMySQLPostgreSQLErlangLuaLisp参考:code.google/p/memcached/wiki/Clients72.使用Memcached安装 启动 命令 统计8安装基于libevent事件处理机制 monkey.org/provos/libevent/./configure-prefix=/usr/localmakesudo make installmemcached:memcached.org/./configure-with-libevent=/usr/localmakemake install9安装成
4、功memcached-h10主要启动参数启动方式:-d 以守护程序(daemon)方式运行-u root 指定用户,如果当前为 root,需要使用此参数指定用户-P/tmp/a.pid保存PID到指定文件内存设置:-m 1024 数据内存数量,不包含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端口,默认为
5、11211,可以不设置-U 11211UDP端口,默认为11211,0为关闭并发设置:-c 1024 最大并发连接数,默认1024,最好是200-t 4线程数,默认4。由于memcached采用NIO,所以更多线程没有太多作用-R 20每个event连接最大并发数,默认20-C禁用CAS命令(可以禁止版本计数,减少开销)例如:/usr/local/bin/memcached-d-u nobody-m 1024-p 11210 -l 10.11.12.70-P/opt/memcached/pid/m11210.pid11daemontools启动工具 memcached有可能会死掉(mixi.j
6、p经验)监视memcached进程并自动启动 启动脚本样例:run.sh参考:cr.yp.to/daemontools.html#!/bin/shif f/etc/sysconfig/memcached;then ./etc/sysconfig/memcachedfiexec 2&1exec memcached p$PORT u$USER m$CACHESIZE c$MAXCONN$OPTIONS12memcached调试-v+输出error/warning-vv+输出命令/响应-vvv+输出内部状态10_10_82_80#memcached-d-u root-m 1024-p 11210-v
7、vv10_10_82_80#memcached-d-u root-m 1024-p 11211 vvvslab class 1:chunk size 96 perslab 10922slab 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 s
8、erver listening(udp)37 server listening(udp)38 new auto-negotiating client connection38:Client using the ascii protocol38 stats38 END38 quit38 connection closed.telnet localhost 11210/11211statsget abcquit13memcached命令列表 存储命令set/add/replace/append/prepend/cas 读取命令get=bget?/gets 删除命令delete 计数命令incr/d
9、ecr 统计命令stats/settings/items/sizes/slabs 工具memcached-tool14存储命令格式:rnrnrn15存储命令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 so
10、ng 32 0 5cplusSTORED/不存在可以addset liu 32 0 4javaSTOREDreplace liu 32 0 5cplusSTORED/已存在可以replaceget liuVALUE cplus 32 5liuENDreplace yang 32 0 5cplusNOT_STORED/不存在不能replacedatablock长度必须正确add只能添加不存在的keyreplace只能替换已有的key16读取命令get/getsget liu song yangVALUE liu 32 4javaVALUE song 32 5cplusEND/查询多个键值gets
11、 liuVALUE liu 32 4 12javaEND/取得版本号replace liu 32 0 4javaSTORED/增加版本号get liuVALUE liu 32 4javaENDgets liuVALUE liu 32 4 13javaEND格式:*rnVALUE rnrnVALUE rnrnENDrncommand:get普通查询,gets用于查询带版本的值版本号+117检查存储命令cascas即check and set,只有版本号相匹配时才能存储,否则返回EXISTS设计意图:解决多客户端并发修改同一条记录的问题,防止使用经过改变了的value/key对cas liu 32
12、 0 5 12cplusEXISTSgets liuVALUE liu 32 4 13javaEND/版本号不同不修改cas liu 32 0 5 13cplusSTOREDgets liuVALUE liu 32 5 14cplusEND/版本号相同才修改当前版本号为13,按12不能修改当前版本号为13,按13可以修改18计数命令incr/decr格式:incr/decr 要求:key必须存在,value必须是数字set count 32 0 1 1STOREDincr count 89decr count 27delete count DELETEDincr count 1NOT_FOUN
13、Dincr liu 2CLIENT_ERROR cannot increment or decrement non-numeric value实现计数器key不存在不能计数value不是数字不能计数19删除命令delete格式:delete DELETErntime:秒数或Unixtime,在time时间内不能add或replace,但能set,不能get。过期后才能够重新set有效并能getdelete liuDELETEDget liuEND20统计命令statsstatsSTAT pid 23178STAT uptime 1039318STAT time 1292036037STAT v
14、ersion 1.4.2STAT pointer_size 64STAT 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 1339
15、28STAT delete_hits 402569STAT incr_misses 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_di
16、sabled_num 0STAT threads 4STAT conn_yields 0STAT bytes 3832761746STAT curr_items 2854731STAT total_items 27302514STAT evictions 18456987STAT reclaimed 0END格式:stats rnSTAT rnENDrn21stats统计项分析CPU占用是否高分析连接数是否太多分析命中率是否太低分析字节数流量分析对象数LRU频率22stats settings查看设置stats settingsSTAT maxbytes 0STAT maxconns 1024
17、STAT tcpport 11213STAT udpport 11211STAT inter NULLSTAT verbosity 0STAT oldest 0STAT evictions onSTAT domain_socket 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 1024S
18、TAT binding_protocol auto-negotiateSTAT item_size_max 1048576END23stats 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:number
19、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_time
20、 60653STAT items:40:outofmemory 0STAT items:40:tailrepairs 0END24stats sizes对象数量统计stats sizesSTAT 96 10922STAT 128 375734STAT 160 201916STAT 192 816311STAT 224 8685STAT 256 3321STAT 288 3549STAT 320 826STAT 352 427END格式:STAT 注意:会锁定服务,暂停处理请求25stats slabs区块统计stats slabsSTAT 1:chunk_size 96STAT 1:chunk
21、s_per_page 10922.STAT 40:chunk_size 1048576STAT 40:chunks_per_page 1STAT 40:total_pages 15STAT 40:total_chunks 15STAT 40:used_chunks 14STAT 40:free_chunks 1STAT 40:free_chunks_end 0STAT 40:mem_requested 9348752STAT 40:get_hits 9593STAT 40:cmd_set 4828STAT 40:delete_hits 40STAT 40:incr_hits 0STAT 40:
22、decr_hits 0STAT 40:cas_hits 0STAT 40:cas_badval 0STAT active_slabs 40STAT total_malloced 4294496616END区块数量命中率分析占用情况被浪费内存数=(total_chunks*chunk_size)-mem_requested如果太大,需要调整factor26其他命令versionflush_allquitecho/nc快捷方式10_10_82_80#telnet localhost 11211Trying 127.0.0.1.Connected to localhost.localdomain(1
23、27.0.0.1).Escape character is.versionVERSION 1.4.5flush_allOKquitConnection closed by foreign host.You have new mail in/var/spool/mail/root10_10_82_80#echo flush_all|nc localhost 11211OK10_10_82_80#echo get liu|nc localhost 11210VALUE liu 32 4javaEND27memcached-tool方便调优Perl脚本:code.sixapart/svn/memca
展开阅读全文