本文目录导航:
Memcache 衔接超时 什么要素
Memcached存储单个item最大数据是在1MB内,假设数据超越1M,存取set和get是都是前往false,而且惹起性能的疑问。
咱们之前对排行榜的数据启动缓存,由于排行榜在咱们一切sql select查问外面占了30%,而且咱们排行榜每小时降级一次性,所以必定对数据做缓存。
为了肃清缓存繁难,把一切的用户的数据放在同一key中,由于memcached:set的时刻没有紧缩数据。
在测试服测试的时刻,没发现疑问,当上线的时刻,结果发现,在线人数刚刚490人的时刻,主机load average飘到7.9。
而后咱们去掉缓存,一下子就降低到0.59。
所以Memcahce不适宜缓存大数据,超越1MB的数据,可以思考在客户端紧缩或拆分到多个key中。
大的数据在启动load和uppack到内存的时刻须要花很长期间,从而降低主机的性能。
Memcached允许最大的存储对象为1M。
这个值由其内存调配机制选择的。
memcached自动状况下驳回了名为Slab Allocator的机制调配、治理内存。
在该机制发生以前,内存的调配是经过对一切记载繁难地启动malloc和free来启动的。
然而,这种方式会造成内存碎片,减轻操作系统内存治理器的累赘,最坏的状况下,会造成操作系统比memcached进程自身还慢。
Slab Allocator就是为处置该疑问而降生的。
Slab Allocator的基本原理是依照预先规则的大小,将调配的内存宰割成特定长度的块,以齐全处置内存碎片疑问.当天(2012-03-16)咱们从新测试了memcached ::set的数据大小。
或许是咱们用php的memcached裁减是最新版,set数据的时刻是自动紧缩的。
set 数据:$ac = new memcahed();$data = str_repeat(a, 1024* 1024); //1M的数据$r=$ac->set(key, $data, 9999);//或许$data = str_repeat(a, 1024* 1024*100);//100M的数据$r=$ac->set(key, $data, 9999);不论是1M的数据还是100M的数据,都能set成功。
起初我发现,memcachedset数据的时刻是自动紧缩的。
由于这个这个是重复的字符串,紧缩率高达1000倍。
因此100M的数据紧缩后实践也就100k而已。
当我设置:$ac->setOption(memcahed::OPT_COMPRESSION,0); //不紧缩存储数据。
$data = str_repeat(a, 1024* 1024); //1M数据$r=$ac->set(key, $data, 9999);//1M的数据set不成功。
也就是说memcached server不能存储超越1M的数据,然而经过客户端紧缩数据后,只需小于1M的数据都能存储成功。
memcached相关常识:1、memcached的基本设置 1)启动Memcache的主机端 # /usr/local/bin/memcached -d -m 10 -u root -l 192.168.0.200 -p -c 256 -P /tmp/-d选项是启动一个守护进程, -m是调配给Memcache经常使用的内存数量,单位是MB,我这里是10MB, -u是运转Memcache的用户,我这里是root, -l是监听的主机IP地址,假设有多个地址的话,我这里指定了主机的IP地址192.168.0.200, -p是设置Memcache监听的端口,我这里设置了,最好是1024以上的端口, -c选项是最大运转的并发衔接数,自动是1024,我这里设置了256,依照你主机的负载量来设定, -P是设置保留Memcache的pid文件,我这里是保留在 /tmp/,2)假设要完结Memcache进程,口头:# kill `cat /tmp/`哈希算法将恣意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。
哈希值是一段数据惟一且极端紧凑的数值示意方式。
假设散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将发生不同的值。
要找到散列为同一个值的两个不同的输入,在计算上是无法能的。
2、实用memcached的业务场景?1)假设网站蕴含了访问量很大的灵活网页,因此数据库的负载将会很高。
由于大局部数据库恳求都是读操作,那么memcached可以清楚地减小数据库负载。
2)假设数据库服务
nosql数据库有哪些
MembaseMembase 是 NoSQL 家族的一个新的重量级的成员。
Membase是开源名目,源代码驳回了Apache2.0的经常使用容许。
该名目托管在 tarballs上,可以下载beta版本的Linux二进制包。
该产品重要是由North Scale的memcached外围团队成员开发成功,其中还包括Zynga和NHN这两个重要奉献者的工程师,这两个组织都是很大的在线游戏和社区网络空间的供应商。
Membase容易装置、操作,可以从单节点繁难的裁减到集群,而且为memcached(有线协定的兼容性)成功了即插即用性能,在运行方面为开发者和运营者提供了一个比拟低的门槛。
做为缓存处置打算,Memcached曾经在不同类型的畛域(特意是大容量的Web运行)有了宽泛的经常使用,其中 Memcached的局部基础代码被间接运行到了Membase主机的前端。
经过兼容多种编程言语和框架,Membase具有了很好的复用性。
在装置和性能方面,Membase提供了有效的图形化界面和编程接口,包括可性能 的告警消息。
Membase的指标是提供对外的线性裁减才干,包括为了参与集群容量,可以针对一致的节点启动复制。
另外,对存储的数据启动再调配依然是必要的。
这方面的一个幽默的个性是NoSQL处置打算所承诺的可预测的性能,类准确性的提早和吞吐量。
经过如下方式可以取得下面提到的个性:◆ 智能将在线数据迁徙到低提早的存储介质的技术(内存,固态硬盘,磁盘)◆ 可选的写操作逐一异步,同步(基于复制,耐久化)◆ 反向通道再平衡[未来思考允许]◆ 多线程低锁争用◆ 尽或许经常使用异步处置◆ 智能成功反双数据删除◆ 灵活再平衡现有集群◆ 经过把数据复制到多个集群单元和允许极速失败转移来提供系统的高可用性。
MongoDBMongoDB是一个介于相关数据库和非相关数据库之间的产品,是非相关数据库当中性能最丰盛,最像相关数据库的。
他允许的数据结构十分松懈,是相似json的bjson格局,因此可以存储比拟复杂的数据类型。
Mongo最大的特点是他允许的查问言语十分弱小,其语法有点相似于面向对象的查问言语,简直可以成功相似相关数据库单表查问的绝大局部性能,而且还允许对数据建设索引。
它的特点是高性能、易部署、易经常使用,存储数据十分繁难。
重要性能个性:◆ 面向汇合存储,易存储对象类型的数据“面向汇合”(Collenction-Oriented),意思是数据被分组存储在数据集中,被称为一个汇合(Collenction)。
每个 汇合在数据库中都有一个惟一的标识名,并且可以蕴含有限数目的文档。
汇合的概念相似相关型数据库(RDBMS)里的表(table),不同的是它不须要定 义任何形式(schema)。
◆ 形式自在形式自在(schema-free),象征着关于存储在mongodb数据库中的文件,咱们不须要知道它的任何结构定义。
假设须要的话,你齐全可以把不同结构的文件存储在同一个数据库里。
◆允许灵活查问◆允许齐全索引,蕴含外部对象◆允许查问◆允许复制和缺点复原◆经常使用高效的二进制数据存储,包括大型对象(如视频等)◆智能处置碎片,以允许云计算档次的裁减性◆允许RUBY,PYTHON,JAVA,C++,PHP等多种言语◆文件存储格局为BSON(一种JSON的裁减)BSON(Binary Serialized document Format)存储方式是指:存储在汇合中的文档,被存储为键-值对的方式。
键用于惟一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。
◆可经过网络访问MongoDB服务端可运转在Linux、Windows或OS X平台,允许32位和64位运行,自动端口为。
介绍运转在64位平台,由于MongoDB在32位形式运转时允许的最大文件尺寸为2GB。
MongoDB把数据存储在文件中(自动门路为:/data/db),为提高效率经常使用内存映射文件启动治理。
HypertableHypertable是一个开源、高性能、可伸缩的数据库,它驳回与Google的Bigtable相似的模型。
在过去数年中,Google为在PC集群 上运转的可伸缩计算基础设备设计建造了三个关键局部。
第一个关键的基础设备是Google File System(GFS),这是一个高可用的文件系统,提供了一个全局的命名空间。
它经过跨机器(和跨机架)的文件数据复制来到达高可用性,并因此免受传统 文件存储系统无法防止的许多失败的影响,比如电源、内存和网络端口等失败。
第二个基础设备是名为Map-Reduce的计算框架,它与GFS严密单干,帮 助处置搜集到的海量数据。
第三个基础设备是Bigtable,它是传统数据库的代替。
Bigtable让你可以经过一些主键来组织海量数据,并成功高效的 查问。
Hypertable是Bigtable的一个开源成功,并且依据咱们的想法启动了一些改良。
Apache CassandraApache Cassandra是一套开源散布式Key-Value存储系统。
它最后由Facebook开发,用于贮存特意大的数据。
Facebook在经常使用此系统。
重要个性:◆ 散布式◆ 基于column的结构化◆ 高舒展性Cassandra的重要特点就是它不是一个数据库,而是由一堆数据库节点独特造成的一个散布式网络服务,对Cassandra 的一个写操作,会被复制到其余节点下来,对Cassandra的读操作,也会被路由到某个节点下面去读取。
关于一个Cassandra群集来说,裁减性能 是比拟繁难的事件,尽管在群集外面参与节点就可以了。
Cassandra是一个混合型的非相关的数据库,相似于Google的BigTable。
其重要性能比 Dynomite(散布式的Key-Value存 储系统)更丰盛,但允许度却不如文档存储MongoDB(介于相关数据库和非相关数据库之间的开源产品,是非相关数据库当中性能最丰盛,最像相关数据库 的。
Cassandra最后由Facebook开发,后转变成了开源名目。
它是一个网络社交云计算方面现实的数据库。
以Amazon专有的齐全散布式的Dynamo为基础,联合了Google BigTable基于列族(Column Family)的数据模型。
P2P去中心化的存储。
很多方面都可以称之为Dynamo 2.0。
CouchDB所用言语: Erlang特点:DB分歧性,易于经常使用经常使用容许: Apache协定: HTTP/REST双向数据复制,继续启动或暂时处置,处置时带抵触审核,因此,驳回的是master-master复制MVCC – 写操作不阻塞读操作可保留文件之前的版本Crash-only(牢靠的)设计须要不断地启动数据紧缩视图:嵌入式 映射/缩小格局化视图:列表显示允许启动主机端文档验证允许认证依据变动实时降级允许附件处置因此, CouchApps(独立的 js运行程序)须要 jQuery程序库最佳运行场景:实用于数据变动较少,口头预约义查问,启动数据统计的运行程序。
实用于须要提供数据版本允许的运行程序。
例如:CRM、CMS系统。
master-master复制关于多站点部署是十分有用的。
和其余数据库比拟,其突出特点是:◆ 形式灵敏 :经常使用Cassandra,像文档存储,你不用提早处置记载中的字段。
你可以在系统运转时轻易的参与或移除字段。
这是一个惊人的效率优化,特意是在大型部 署上。
◆ 真正的可裁减性 :Cassandra是纯正意义上的水平裁减。
为给集群参与更多容量,可以指向另一台电脑。
你不用重启任何进程,扭转运行查问,或手动迁徙任何数据。
◆ 少数据中心识别 :你可以调整你的节点规划来防止某一个数据中心起火,一个备用的数据中心将至少有每条记载的齐全复制。
◆ 范围查问 :假设你不青睐所有的键值查问,则可以设置键的范围来查问。
◆ 列表数据结构 :在混合形式可以将超级列参与到5维。
关于每个用户的索引,这是十分繁难的。
◆ 散布式写操作 :有可以在任何中央任何期间集中读或写任何数据。
并且不会有任何单点失败。
问度娘,啥都有。
linux memcached 怎样经常使用
以后名目中,linux下memcached的启动/完结的方式自动状况下memcached装置到/usr/local/bin下。
进入装置目录,启动memcached:/usr/local/memcached/bin/memcached -d -c -m 1024 -u root失掉运转形态:echo stats | nc localhost (可以检查出pid) 或经常使用ps -ef|grep memcached 中止memcached:kill -9 pid(-9示意强迫杀死,pid 为进程的进程标识符)-d 选项是启动一个守护进程,-m 是调配给Memcache经常使用的内存数量,单位是MB,这里是1024MB,自动是64MB-u 是运转Memcache的用户,这里是root-l 是监听的主机IP地址,自动应该是本机-p 是设置Memcache监听的端口,自动是,最好是1024以上的端口-c 选项是最大运转的并发衔接数,自动是1024,这里设置了,依照你主机的负载量来设定-P 是设置保留Memcache的pid文件位置-h 打印协助消息-v 输入正告和失误消息-vv 打印客户端的恳求和前往消息 ps -ef|grep memcached(命令说明) grep:性能说明:查找文件里合乎条件的字符串。
|:管道命令操作符ps(process status):性能说明:报告程序状况。
衔接到 memcached:telnet ip 端口,如telnet 192.168.100.11 stats检查形态,flush_all:清楚缓存检查memcached形态的基本命令,经过这个命令可以看到如下消息:STAT pid 进程IDSTAT uptime 主机运转秒数STAT time 主机以后unix期间戳STAT version 1.4.4 主机版本STAT pointer_size 64 操作系统字大小(这台主机是64位的)STAT rusage_user 0.进程累计用户期间STAT rusage_system 0.进程累计系统期间STAT curr_connections 10 以后关上衔接数STAT total_connections 82曾关上的衔接总数STAT connection_structures 13主机调配的衔接结构数STAT cmd_get 54口头get命令总数STAT cmd_set 34口头set命令总数STAT cmd_flush 3 指向flush_all命令总数STAT get_hits 9get命中次数STAT get_misses 45 get未命中次数STAT delete_misses 5 delete未命中次数STAT delete_hits 1 delete命中次数STAT incr_misses 0 incr未命中次数STAT incr_hits 0 incr命中次数STAT decr_misses 0 decr未命中次数STAT decr_hits 0 decr命中次数STAT cas_misses 0cas未命中次数STAT cas_hits 0cas命中次数STAT cas_badval 0经常使用擦拭次数STAT auth_cmds 0STAT auth_errors 0STAT bytes_read 读取字节总数STAT bytes_written 写入字节总数STAT limit_maxbytes 调配的内存数(字节)STAT accepting_conns 1 目前接受的链接数STAT listen_disabled_num 0STAT threads 4 线程数STAT conn_yields 0STAT bytes 0 存储item字节数STAT curr_items 0item个数STAT total_items 34item总数STAT evictions 0 为失掉空间删除item的总数 另外一个例子:启动/完结memcached -d -m 10 -u root -l 192.168.0.122 -p -c 256 -P /tmp/-d 选项是启动一个守护进程,-m 是调配给Memcache经常使用的内存数量,单位是MB,这里是10MB-u 是运转Memcache的用户,这里是root-l 是监听的主机IP地址,假设有多个地址的话,这里指定了主机的IP地址192.168.0.122-p 是设置Memcache监听的端口,这里设置了,最好是1024以上的端口-c 选项是最大运转的并发衔接数,自动是1024,这里设置了256,依照你主机的负载量来设定-P 是设置保留Memcache的pid文件kill `cat /tmp/` 失掉运转形态echo stats | nc 192.168.1.123 watch echo stats | nc 192.168.1.123 (实时形态)