Memcached内存分析、调优、集群

上传人:鲁** 文档编号:579467206 上传时间:2024-08-26 格式:PPT 页数:70 大小:2.19MB
返回 下载 相关 举报
Memcached内存分析、调优、集群_第1页
第1页 / 共70页
Memcached内存分析、调优、集群_第2页
第2页 / 共70页
Memcached内存分析、调优、集群_第3页
第3页 / 共70页
Memcached内存分析、调优、集群_第4页
第4页 / 共70页
Memcached内存分析、调优、集群_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《Memcached内存分析、调优、集群》由会员分享,可在线阅读,更多相关《Memcached内存分析、调优、集群(70页珍藏版)》请在金锄头文库上搜索。

1、Memcached内存分析、调优、集群刘中兵 搜狐TPC v1 2010/12/导航1.Memcached背景2.Memcached使用:安装、启动、命令、统计3.深入Memcached内部:slab、page、item4.Memcached分布式:一致性Hash5.key-value系统比较:集群、性能对比6.Memcached客户端21.Memcached背景Memcached是什么memcached由LiveJournal运营人员开发memcached是高性能的分布式内存缓存服务器,开源协议简单基于libevent时间处理:epoll/kqueue内置内存存储方式:slab/LRU目前用

2、户LiveJournalFacebookmixiDiggWikipediaVox4facebook200 memcached servers16GB 四核 AMD643TB cache data5Memcached支持语言C/C+libmemcachedlibmemcacheapr_memcachememcaheclientlibketamaPHPPECL/memcachedPECL/memcachePHP libmemcachedJavaspymemcachedJava memcached client/dangamemcache-client-forjava/taobaoPythonRub

3、yPerl.NETMySQLPostgreSQLErlangLuaLisp参考:http:/ 启动 命令 统计7安装基于libevent事件处理机制 http:/www.monkey.org/provos/libevent/./configure -prefix=/usr/localmakesudo make installmemcached: http:/memcached.org/./configure -with-libevent=/usr/localmakemake install8安装成功memcached -h9主要启动参数启动方式:-d 以守护程序(daemon)方式运行-u r

4、oot 指定用户,如果当前为 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端口,默认为11211,可以不设置-U 11211UDP端口,默认为11211,0为关闭并发设置:-c 1

5、024 最大并发连接数,默认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.pid10daemontools启动工具memcached有可能会死掉(mixi.jp经验)监视memcached进程并自动启动启动脚本样例:run.sh参考:http

6、:/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 $OPTIONS11memcached调试-v+输出error/warning-vv+输出命令/响应-vvv +输出内部状态10_10_82_80 # memcached -d -u root -m 1024 -p 11210 -vvv10_10_82_80 # memca

7、ched -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 server li

8、stening (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 abcquit12memcached命令列表存储命令set/add/replace/append/prepend/cas读取命令get=bget?/gets删除命令delete计数命令incr/decr统计命令st

9、ats/settings/items/sizes/slabs工具memcached-tool13存储命令commandset无论如何都进行存储add只有数据不存在时进行添加repalce只有数据存在时进行替换append往后追加:append datablock ?prepend往前追加:prepend datablock cas按版本号更改key字符串,250个字符,不包含空格和控制字符flags客户端用来标识数据格式的数值,如json,xml,压缩等exptime存活时间s,0为永远,30天为unixtimebytesbyte字节数,不包含rn,根据长度截取存/取的字符串,可以是0,即存空

10、串datablock文本行,以rn结尾,当然可以包含r或nstatusSTORED/NOT_STORED/EXISTS/NOT_FOUNDERROR/CLIENT_ERROR/SERVER_ERROR服务端会关闭连接以修复格式: rnrnrn14存储命令set/add/replaceset liu 32 0 4javaSTORED/正确get liuVALUE abc 32 4javaENDsetliu3204cplusCLIENT_ERRORbaddatachunkERROR/长度错误set liu 32 0 4javaSTOREDadd liu 32 0 5cplusNOT_STORED/

11、已存在不能addget liuVALUE abc 32 4javaENDadd song 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只能替换已有的key15读取命令get/getsget liu song yangVALUE liu

12、32 4javaVALUE song 32 5cplusEND/查询多个键值gets 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用于查询带版本的值版本号+116检查存储命令cascas即check and set,只有版本号相匹配时才能存储,否则返回EXISTS设计意图:解决多客户

13、端并发修改同一条记录的问题,防止使用经过改变了的value/key对cas liu 32 0 5 12cplusEXISTSgets liuVALUE liu 32 4 13javaEND/版本号不同不修改cas liu 32 0 5 13cplusSTOREDgets liuVALUE liu 32 5 14cplusEND/版本号相同才修改当前版本号为13,按12不能修改当前版本号为13,按13可以修改17计数命令incr/decr格式:incr/decr 要求:key必须存在,value必须是数字set count 32 0 1 1STOREDincr count 89decr coun

14、t 27delete count DELETEDincr count 1NOT_FOUNDincr liu 2CLIENT_ERROR cannot increment or decrement non-numeric value实现计数器key不存在不能计数value不是数字不能计数18删除命令delete格式:delete DELETErntime: 秒数或Unixtime,在time时间内不能add或replace,但能set,不能get。过期后才能够重新set有效并能getdelete liuDELETEDget liuEND19统计命令statsstatsSTAT pid 23178

15、STAT uptime 1039318STAT time 1292036037STAT version 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 79114939ST

16、AT get_misses 24322507STAT delete_misses 133928STAT 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 4

17、294967296STAT accepting_conns 1STAT listen_disabled_num 0STAT threads 4STAT conn_yields 0STAT bytes 3832761746STAT curr_items 2854731STAT total_items 27302514STAT evictions 18456987STAT reclaimed 0END格式:stats rnSTAT rnENDrn20stats统计项名称描述pidMemcached进程IDuptimeMemcached运行时间,单位:秒timeMemcached当前的UNIX时间v

18、ersionMemcached的版本号rusage_user该进程累计的用户时间,单位:秒rusage_system该进程累计的系统时间,单位:秒curr_connections当前连接数量total_connectionsMemcached运行以来接受的连接总数connection_structuresMemcached分配的连接结构的数量cmd_get查询请求总数get_hits查询成功获取数据的总次数get_misses查询成功未获取到数据的总次数cmd_set存储(添加/更新)请求总数bytesMemcached当前存储内容所占用字节数bytes_readMemcached从网络读取到

19、的总字节数bytes_writtenMemcached向网络发送的总字节数limit_maxbytesMemcached在存储时被允许使用的字节总数curr_itemsMemcached当前存储的内容数量total_itemsMemcached启动以来存储过的内容总数evictionsLRU释放对象数,用来释放内存分析CPU占用是否高分析连接数是否太多分析命中率是否太低分析字节数流量分析对象数LRU频率21stats settings查看设置stats settingsSTAT maxbytes 0STAT maxconns 1024STAT tcpport 11213STAT udpport

20、 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 1024STAT binding_protocol auto-neg

21、otiateSTAT item_size_max 1048576END名称描述maxbytes最大字节数限制,0无限制maxconns允许最大连接数tcpportTCP端口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_pref

22、ixstats分隔符detail_enabledyes/no,显示stats细节信息reqs_per_event最大IO吞吐量(每event)cas_enabledyes/no,是否启用CAS,-C禁用tcp_backlogTCP监控日志auth_enabled_sasl yes/no,是否启用SASL验证22stats items数据项统计stats itemsSTAT items:1:number 10922STAT items:1:age 350988STAT items:1:evicted 3829STAT items:1:evicted_nonzero 0STAT items:1:e

23、victed_time 690209STAT items:1:outofmemory 0STAT items:1:tailrepairs 0STAT items:2:number 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:a

24、ge 977359STAT items:40:evicted 25STAT items:40:evicted_nonzero 0STAT items:40:evicted_time 60653STAT items:40:outofmemory 0STAT items:40:tailrepairs 0END名称描述number该slab中对象数,不包含过期对象ageLRU队列中最老对象的过期时间evictedLRU释放对象数evicted_nonzero设置了非0时间的LRU释放对象数evicted_time最后一次LRU秒数,监控频率outofmemory不能存储对象次数,使用-M会报错tai

25、lrepairs修复slabs次数reclaimed使用过期对象空间存储对象次数23stats sizes对象数量统计stats sizesSTAT 96 10922STAT 128 375734STAT 160 200416STAT 192 816311STAT 224 8685STAT 256 3321STAT 288 3549STAT 320 826STAT 352 427END格式:STAT 注意:会锁定服务,暂停处理请求24stats slabs区块统计stats slabsSTAT 1:chunk_size 96STAT 1:chunks_per_page 10922.STAT 4

26、0: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:decr_hits 0STAT 40:cas_

27、hits 0STAT 40:cas_badval 0STAT active_slabs 40STAT total_malloced 4294496616END名称描述chunk_sizechunk大小,bytechunks_per_page每个page的chunk数量total_pagespage数量total_chunkschunk数量*page数量get_hitsget命中数cmd_setset数delete_hitsdelete命中数incr_hitsincr命中数decr_hitsdecr命中数cas_hitscas命中数cas_badvalcas数据类型错误数used_chunks已

28、被分配的chunk数free_chunks剩余chunk数free_chunks_end分完page浪费chunk数mem_requested请求存储的字节数active_slabsslab数量total_malloced总内存数量区块数量命中率分析占用情况被浪费内存数=(total_chunks * chunk_size) - mem_requested如果太大,需要调整factor25其他命令versionflush_allquitecho/nc快捷方式10_10_82_80 # telnet localhost 11211Trying 127.0.0.1.Connected to loc

29、alhost.localdomain (127.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 4javaEND26memcached-tool方便调

30、优Perl脚本:http:/ 192.168.12.195:11210memcached-tool 192.168.12.195:11210 displaymemcached-tool 192.168.12.195:11210 statsmemcached-tool 192.168.12.195:11210 stats itemsmemcached-tool 192.168.12.195:11210 stats slabsmemcached-tool 192.168.12.195:11210 dumpmemcached-tool 192.168.12.195:11210 move/数据迁移27

31、memcached-toolmemcached-tool 192.168.12.195:11213 # Item_Size Max_age 1MB_pages Count Full? 1 96 B 384295 s 1 10922 yes 2 120 B 964793 s 43 375734 yes 3 152 B 196 s 1 1021 no 4 192 B 962720 s 186 1015746 yes 5 240 B 954705 s 2 8734 yes 6 304 B 945823 s 2 6898 yes 7 384 B 954218 s 9 24569 yes 8 480 B

32、 980911 s 91 198744 yes 9 600 B 963930 s 104 181688 yes 10 752 B 964602 s 274 381956 yes 11 944 B 963902 s 173 192030 yes 12 1.2 kB 962169 s 79 69914 yes 13 1.4 kB 959572 s 67 47436 yes 14 1.8 kB 957541 s 69 38916 yes 15 2.3 kB 956767 s 75 33825 yes 16 2.8 kB 957198 s 105 37904 yes 17 3.5 kB 957049

33、s 128 36864 yes 18 4.4 kB 955935 s 129 29669 yes 19 5.5 kB 956721 s 111 20423 yes 20 6.9 kB 954862 s 119 17492 yes 21 8.7 kB 953024 s 157 18526 yes 22 10.8 kB 953361 s 226 21243 yes 23 13.6 kB 953301 s 315 23625 yes 24 16.9 kB 958310 s 356 21360 yes 25 21.2 kB 961544 s 330 15839 yes 26 26.5 kB 96112

34、8 s 259 9840 yes 27 33.1 kB 962389 s 181 5430 yes 28 41.4 kB 966056 s 141 3384 yes 29 51.7 kB 966694 s 111 2109 yes 30 64.7 kB 965340 s 87 1305 yes 31 80.9 kB 962627 s 65 779 yes 32 101.1 kB 965821 s 38 379 yes 33 126.3 kB 949182 s 25 200 yes 34 157.9 kB 965799 s 18 107 yes 35 197.4 kB 876687 s 11 5

35、4 yes 36 246.8 kB 938290 s 9 36 yes 37 308.5 kB 837011 s 8 22 yes 38 385.6 kB 886180 s 14 27 yes 39 482.0 kB 908224 s 6 10 yes 40 1024.0 kB 990279 s 15 14 yes28UDP协议何时使用UDP?TCP连接客户端过多时选用允许少量的操作失败如get有少量丢失,可以当做没被cache处理frame header: 8byte + tcppacket0-1 Request ID2-3 Sequence number4-5 Total number o

36、f datagrams in this message6-7 Reserved for future use; must be 029总结:memcached使用安装libeventmemcached启动参数自启动daemontools命令存储命令set/add/replace/append/prepend/cas读取命令get=bget?/gets删除命令delete计数命令incr/decr统计命令stats/settings/items/sizes/slabs工具memcached-tool303.深入Memcached内部31memcached机制守护进程机制UNIX daemonSo

37、cket事件处理机制non-blocked:非阻塞libevent:异步事件处理epoll/kqueue内存管理机制slab:内存分配机制LRU:对象清除机制Hash机制:快速检索item多线程处理机制:pthread(POSIX)线程模式编译时开启:./configure enable-threads目前还比较粗糙,锁机制locking不够完善负载过重时,可以开启(-t线程数为CPU核数)32memcached内存管理机制SLAB内存处理机制提前分配大内存slab 1MB,再进行小对象填充chunk避免大量重复的初始化和清理减轻内存管理器负担避免频繁malloc/free系统碎片懒惰检测机制

38、不检测item对象是否超时get时检查item对象是否应该删除懒惰删除机制删除item对象时,不释放内存,作删除标记,指针放入slot回收插槽,下次分配的时候直接使用33名词解释slab class:内存区类别(48byte-1MB)slab=page:动态创建的实际内存区slab classid:slab class的IDchunk:数据区块,固定大小item:实际存储在chunk中的数据项34slab内存分配35slab内存结构图:二维数组链表 slab是一次申请内存的最小单位每个slab都是1MBchunk填充item后会有空间浪费双向链表key索引表剩余空间指针slab指针列表回收空间

39、指针36slab内存分配实例37class sizechunkspages大小大小1961092211MB212087384343MB3152689811MB41925461186186MB5240436922MB6304344922MB7384273099MB848021849191MB96001747104104MB107521394274274MB119441110173173MB1211848857979MB1314807086767MB1418565646969MB1523204517575MB162904361105105MB173632288128128MB18454423012

40、9129MB195680184111111MB207104147119119MB218880118157 157MB221110494226 225MB231388075315 313MB241735260356 354MB252169648330 328MB262712038259 255MB273390430181 176MB284238424141 137MB295298419111 107MB3066232158783MB3182792126562MB32103496103838MB3312937682525MB3416172061817MB3520215251111MB3625269

41、6499MB37315872388MB3839484021411MB39493552266MB40104857611515MB 合计4.1GB实例数据-195:11213 4GB38计算slab占用内存39slab参数进程内存区slabclass元信息:1.1中是21byte,1.2中是200byteHashtable:1.1中位41MB,1.2中位65MB数据内存区slab默认大小为1048576byte(1MB),大于1MB数据忽略chunk初始大小,1.1中是1byte,1.2中是48byte增长因子factor1.1中,chunk大小为初始大小*2n,n为classid,即:id为0的

42、slab大小1byte,id为1的slab大小2byte,id为2的slab大小4byte.id为20的slab,每chunk大小为1MB,只有一个chunk1.2中有一个factor值,默认为1.2596,120,152.40Item内存分配41Item数据格式 Item是保存在chunk中的实际数据42新建Item分配内存过程快速定位slab classid计算key+value+suffix+32结构体,如90byte如果1MB,无法存储丢弃取最小冗余的slab class如:有48,96,120,存90会选择96按顺序寻找可用chunkslot:检查slab回收空间slot里是否有剩余

43、chunkdelete:delete时标记到slotexptime:get时检查的过期对象标记到slotend_page_ptr:检查page中是否有剩余chunkmemory:内存还有剩余则开辟新的slabLRU:Slab内部扫描Item双向链表50次43内存有浪费了!slab尾部剩余空间如classid=40中,两个chunk占用了1009384byte,就有1048576-1009384=39192byte被浪费解决办法:规划slab=chunk*n整数倍 slab中chunk利用率低:申请的slab只存放了一个Item解决办法:规划slab=chunkchunk存储Item浪费如I t

44、em是100,存到128字节chunk,就有28字节浪费解决办法:规划chunk=Item44使用合适的factor,减少浪费-f参数:默认为1.25,曾经为2值越小,slab中chunk size差距越小,内存浪费越小1.25适合缓存几百字节的对象slab class 1: chunk size 128 perslab 8192slab class 2: chunk size 256 perslab 4096slab class 3: chunk size 512 perslab 2048slab class 4: chunk size 1024 perslab 1024slab class

45、 5: chunk size 2048 perslab 512slab class 6: chunk size 4096 perslab 256slab class 7: chunk size 8192 perslab 128slab class 8: chunk size 16384 perslab 64slab class 9: chunk size 32768 perslab 32slab class 10: chunk size 65536 perslab 16slab class 11: chunk size 131072 perslab 8slab class 12: chunk

46、size 262144 perslab 4slab class 13: chunk size 524288 perslab 2slab class 1: chunk size 88 perslab 11915slab class 2: chunk size 112 perslab 9362slab class 3: chunk size 144 perslab 7281slab class 4: chunk size 184 perslab 5698slab class 5: chunk size 232 perslab 4519slab class 6: chunk size 296 per

47、slab 3542slab class 7: chunk size 376 perslab 2788slab class 8: chunk size 472 perslab 2221slab class 9: chunk size 592 perslab 1771slab class 10: chunk size 744 perslab 1409factor=2factor=1.25建议:计算一下数据的预期平均长度,调整factor,以获得最恰当的设置45根据数据分布调整factor非均匀分布,即数据长度集中在几个区域内如保存用户Session更极端的状态是等长数据如定长键值,定长数据多见于访

48、问、在线统计或执行锁计算Item长度key键长suffix+value值长结构大小(32字节)46调优的最高指示精神提高内存利用率,减少内存浪费提高命中率(80%,95%?)调优方法:f参数:factor增长因子 n参数:chunk初始值 47一切都是为了更快低CPU消耗(瓶颈在于网络IO)libevent事件机制slab内存预分配机制适合使用大量低CPU的机器搭建集群32位机器最大2GB,64GB无限制-m分配内存为数据区,memcached本身也需要占用内存,因此不可将物理内存全部分配使用连接池维持连接48因为优秀,所以不足Cant dump无法备份,重启无法恢复Cant iterate

49、over keys无法查询Not persistent没有持久化,重启全部丢失Not redundant单点故障failoverNo Sessions崩溃没法查找原因No security任何机器都可以telnet,需要放在防火墙后内存问题LRU是slab局部,没有全局有空间浪费日志问题没有合理的日志集群问题集群增加机器成本高49改进计划扩展二进制协议不需要文本解析,速度更快减少文本协议的漏洞外部引擎加载功能MySQL plugin504.Memcached分布式51Memcached使用方式 -客户端实现Hash52Memcached架构层次 -减少DB访问,提高Web速度53添加对象时54

50、获取对象时55最常用的Hash算法根据余数计算Hash如Perl函数库:Cache:Memcached优点:简单、分散性优秀缺点:添加/移除服务器时,缓存重组代价巨大,影响命中率26个字母由3个节点增加一个节点,命中率下降了23%三个节点:node1 node2 nod3node1: a,c,d,e,h,j,n,u,w,xnode2: g,i,k,l,p,r,s,ynode3: b,f,m,o,q,t,v,z四个节点:node1 node2 node3 node4node1: d,f,m,o,t,vnode2: b,i,k,p,r,ynode3: e,g,l,n,u,wnode4: a,c,h

51、,j,q,s,x,z增加节点56Consistent Hash参考原文:http:/alpha.mixi.co.jp/blog/?p=158http:/ Hashing最大限度地抑制了键的重新分布有的Consistent Hashing的实现方法还采用了虚拟节点的思想58支持Consistent Hash的函数库libketama的PHP库libketama(网站Last.fm)Perl客户端Cache:Memcached:Fast(search.cpan.org)Cache:Memcached:libmemcached(search.cpan.org)595.key-value系统比较60兼

52、容memcached软件repcached为memcached提供复制(replication)功能的patch单master单slave,互为主辅Flared存储到QDBM。实现了异步复制和fail over等功能memagent连接多个memd,实现一致性Hash,请求转发memcachedb存储到BerkleyDBTokyo Tyrant存储到Tokyo Cabinet。与memcached协议兼容,能通过HTTP访问61持久化key-value系统Memcachedb持久化BerkelyDB-Sina主服务器可读写、辅服务器只读同步日志文件非常大,需人工定期清理Tokyo Tyrant

53、Tokyo Cabinet持久化- mixi.jp优点读写4-5w/s,写100万0.643秒,读100万0.773秒,是BerkeleyDB 的几倍双机互为主辅模式,主辅库均可读写具有故障转移、日志文件体积小、大数据量下表现出色等优势缺点TC在32位下数据库单个文件2GB,64位无限制没有scale的能力,只能主从复制TC性能会随数据量的增加而下降,上亿条下降较明显Nuclear-renren一致性Hash,动态增加/删除节点62持久化Redis定期异步把数据库flush到硬盘,比Memcached多一个永久存储功能,优点读写10w/s,是性能最快的Key-Value DB最大魅力:支持Li

54、st链表和Set集合,对List/Set各种操作单个value的最大限制是1GB,memcached只能保存1MB主要缺点容量受物理内存限制,不能用作海量数据的高性能读写不具有scaleRedis适合的场景较小数据量的高性能操作和运算上使用Redis的网站有github,Engine Yard63分布式数据库CouchDB持久化Cassandra分布式/NoSQL/scale适合于实时数据处理MongoDB分布式/NoSQLBigTable/Hbase适合于数据仓库、大型数据的处理与分析64memcached测试65memd&memdbwrite平均write最大read平均read最大memd16222187992097122497memdb89581048068711254266memdb/TT/redis测试500w+100byte read/write67memdb/TT/redis测试50w+20k read/write686.Memcached客户端69Java客户端spymemcacheddangataobao clientsohu dal70

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号