- 浏览: 2602255 次
- 来自: 杭州
文章分类
- 全部博客 (1190)
- webwork (4)
- 网摘 (18)
- java (104)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (15)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (8)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
Aqu415:
,默认是netty还是hassion?
dubbo入门 -
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介
我们之前对排行榜的数据进行缓存,由于排行榜在我们所有sql select查询里面占了30%,而且我们排行榜每小时更新一次,所以必须对数据做缓存。为了清除缓存方便,把所有的用户的数据放在同一key中,由于 memcached:set的时候没有压缩数据。在测试服测试的时候,没发现问题,当上线的时候,结果发现,在线人数刚刚490人的时候,服务器load average飘到7.9。然后我们去掉缓存,一下子就下降到0.59。
所以Memcahce不适合缓存大数据,超过 1MB的数据 ,可以考虑在客户端压缩或拆分到多个 key 中。大的数据在进行load和uppack到内存的时候需要花很长时间,从而降低服务器的性能。
Memcached 支持最大的存储对象为 1M 。这个值由其内存分配机制决定的。
1.memcached是原子的吗?
所有的被发送到memcached的单个命令是完全原子的。如果您针对同一份数据同时发送了一个set命令和一个get命令,它们不会影响对方。它 们将被串行化、先后执行。即使在多线程模式,所有的命令都是原子的。然是,命令序列不是原子的。如果首先通过get命令获取了一个item,修改了它,然 后再把它set回memcached,系统不保证这个item没有被其他进程(process,未必是操作系统中的进程)操作过。
memcached 1.2.5以及更高版本,提供了gets和cas(check and set)命令,它们可以解决上面的问题。如果使用gets命令查询某个key的item,memcached会返 回该item当前值的唯一标识。如果客户端程序覆写了这个item并想把它写回到memcached中,可以通过cas命令把那个唯一标识一起发送给 memcached。如果该item存放在memcached中的唯一标识与您提供的一致,写操作将会成功。如果另一个进程在这期间也修改了这个 item,那么该item存放在memcached中的唯一标识将会改变,写操作就会失败。
2.什么是二进制协议,是否需要关注?
二进制协议尝试为端提供一个更有效的、可靠的协议,减少客户端/服务器端因处理协议而产生的CPU时间。根据Facebook的测试,解析ASCII协议是memcached中消耗CPU时间最多的环节。
3.memcached对item的过期时间有什么限制?
item对象的过期时间最长可以达到30天。memcached把传入的过期时间(时间段)解释成时间点后,一旦到了这个时间点,memcached就把item置为失效状态,这是一个简单但obscure的机制。
4. memcached的内存分配器是如何工作的?为什么不适用malloc/free!?为何要使用slabs?
实际上,这是一个编译时选项。默认会使用内部的slab分配器,而且确实应该使用内建的slab分配器。最早的时候,memcached只使用 malloc/free来管理内存。然而,这种方式不能与OS的内存管理以前很好地工作。反复地malloc/free造成了内存碎片,OS最终花费大量 的时间去查找连续的内存块来满足malloc的请求,而不是运行memcached进程。slab分配器就是为了解决这个问题而生的。内存被分配并划分成 chunks,一直被重复使用。因为内存被划分成大小不等的slabs,如果item的大小与被选择存放它的slab不是很合适的话,就会浪费一些内存。
可以参考:memcached server LRU 深入分析 http://www.iteye.com/topic/225692
5. memcached能接受的key的最大长度是250个字符
memcached能接受的key的最大长度是250个字符。需要注意的是,250是memcached服务器端内部的限制。如果使用的 Memcached客户端支持"key的前缀"或类似特性,那么key(前缀+原始key)的最大长度是可以超过250个字符的。推荐使用较短的key, 这样可以节省内存和带宽。
6.不适用memcached的业务场景?
1)缓存对象的大小大于1MB
Memcached本身就不是为了处理庞大的多媒体(large media)和巨大的二进制块(streaming huge blobs)而设计的。
2)key的长度大于250字符
3)虚拟主机不让运行memcached服务
4)业务本身需要的是持久化数据
所以Memcahce不适合缓存大数据,超过 1MB的数据 ,可以考虑在客户端压缩或拆分到多个 key 中。大的数据在进行load和uppack到内存的时候需要花很长时间,从而降低服务器的性能。
Memcached 支持最大的存储对象为 1M 。这个值由其内存分配机制决定的。
1.memcached是原子的吗?
所有的被发送到memcached的单个命令是完全原子的。如果您针对同一份数据同时发送了一个set命令和一个get命令,它们不会影响对方。它 们将被串行化、先后执行。即使在多线程模式,所有的命令都是原子的。然是,命令序列不是原子的。如果首先通过get命令获取了一个item,修改了它,然 后再把它set回memcached,系统不保证这个item没有被其他进程(process,未必是操作系统中的进程)操作过。
memcached 1.2.5以及更高版本,提供了gets和cas(check and set)命令,它们可以解决上面的问题。如果使用gets命令查询某个key的item,memcached会返 回该item当前值的唯一标识。如果客户端程序覆写了这个item并想把它写回到memcached中,可以通过cas命令把那个唯一标识一起发送给 memcached。如果该item存放在memcached中的唯一标识与您提供的一致,写操作将会成功。如果另一个进程在这期间也修改了这个 item,那么该item存放在memcached中的唯一标识将会改变,写操作就会失败。
2.什么是二进制协议,是否需要关注?
二进制协议尝试为端提供一个更有效的、可靠的协议,减少客户端/服务器端因处理协议而产生的CPU时间。根据Facebook的测试,解析ASCII协议是memcached中消耗CPU时间最多的环节。
3.memcached对item的过期时间有什么限制?
item对象的过期时间最长可以达到30天。memcached把传入的过期时间(时间段)解释成时间点后,一旦到了这个时间点,memcached就把item置为失效状态,这是一个简单但obscure的机制。
4. memcached的内存分配器是如何工作的?为什么不适用malloc/free!?为何要使用slabs?
实际上,这是一个编译时选项。默认会使用内部的slab分配器,而且确实应该使用内建的slab分配器。最早的时候,memcached只使用 malloc/free来管理内存。然而,这种方式不能与OS的内存管理以前很好地工作。反复地malloc/free造成了内存碎片,OS最终花费大量 的时间去查找连续的内存块来满足malloc的请求,而不是运行memcached进程。slab分配器就是为了解决这个问题而生的。内存被分配并划分成 chunks,一直被重复使用。因为内存被划分成大小不等的slabs,如果item的大小与被选择存放它的slab不是很合适的话,就会浪费一些内存。
可以参考:memcached server LRU 深入分析 http://www.iteye.com/topic/225692
5. memcached能接受的key的最大长度是250个字符
memcached能接受的key的最大长度是250个字符。需要注意的是,250是memcached服务器端内部的限制。如果使用的 Memcached客户端支持"key的前缀"或类似特性,那么key(前缀+原始key)的最大长度是可以超过250个字符的。推荐使用较短的key, 这样可以节省内存和带宽。
6.不适用memcached的业务场景?
1)缓存对象的大小大于1MB
Memcached本身就不是为了处理庞大的多媒体(large media)和巨大的二进制块(streaming huge blobs)而设计的。
2)key的长度大于250字符
3)虚拟主机不让运行memcached服务
4)业务本身需要的是持久化数据
发表评论
-
Sofa memcached client
2012-12-13 17:05 983一、简介 Sofa 源于 Mi ... -
xmemcached 源代码简单记录
2012-12-13 15:14 851XMemcachedClient.set() 1. ... -
python-memcached client 性能分析
2012-11-11 12:41 888前面python-memcached client 性能问题 ... -
python-memcached client 性能问题
2012-11-09 12:02 1494线上发现memcached偶发超过100ms的情况,刚开始以为 ... -
线程安全的纯python-memcached客户端
2012-10-21 15:06 2016前面测试过python-memcached客户端通过threa ... -
集中化管理memcached的想法
2012-10-21 14:14 953现在线上web服务器都是直接使用memcached,虽然简单但 ... -
安装libmemcached
2012-10-12 23:32 1748libmemcached是一个c编写的高性能,线程安全的mem ... -
python-memcached的线程安全问题
2012-10-12 15:40 3980答案是肯定的,前提你在使用Python 2.4+和python ... -
使用libmemcached提速memcached的操作
2012-10-12 13:32 1013... -
对memcaced的python客户端测试
2012-10-12 11:34 1232在线上发现python-memcached客户端很有问题,我在 ... -
memcached客户端比较
2012-07-21 16:36 0一、简介 Sofa 源于 Mi ... -
memcache mutex设计模式
2012-07-21 14:19 0Mutex主要用于有大量并发访问并存在cache过期的场合,如 ... -
使用memcache实现高并发计数器
2012-07-21 14:08 6542在网站中很多场景都有 ... -
淘宝在Memcached使用记录
2012-07-21 14:04 5351原文:http://blog.csdn.net/cenwenc ... -
memcache的API
2012-07-21 13:55 655php版本的API:http://www.php.net/ma ... -
memcached协议
2012-07-21 13:36 756协议 memcached的客户端通过 ... -
一致性 hash 算法( consistent hashing )
2012-07-21 12:42 834原文:http://num7.iteye.com/blog/7 ... -
memcached 内存分配(slab和chunk)
2012-07-13 16:43 7161开启memcached:memcached -d -m 10 ... -
memcached telnet
2012-07-13 16:06 1041memcached没有client工具来查看状态,只提供tel ... -
memcache中的key为什么要用md5处理
2012-06-15 17:55 1340官方的说法是: “A few years ago, we ...
相关推荐
memcached 共享内存解决方案,memcached安装,使用
Memcached使用点滴总结分享
memcached 总结,大家有兴趣的可以看看
NULL 博文链接:https://aperise.iteye.com/blog/2296219
Memcached是一种集中式Cache,支持分布式横向扩展。这里需要解释说明一下,很多开发者觉得Memcached是一种分布式缓存系统,但是其实Memcached服务端本身是单实例的...下面再总结几个它的特点来理解一下其优点和限制...
Memcached vs Redis,总结的十分清晰和详细。
自己总结的memcached的网络部分,主要是TCP 套接字编程方面,有兴趣的可以看看。
一份.NET中实现MEMCACHED的总结。
memcached是什么? memcached的特征 协议简单 基于libevent的事件处理 内置内存存储方式 memcached不互相通信的分布式 安装memcached memcached的安装 memcached的启动 用客户端连接 使用Cache::Memcached ...总结
tomcat8+jkd1.8+memcached session manager共享session,资源总结来自https://download.csdn.net/download/wangluoyoudu/9968691,本人下载可用并用于总结jar包冲突兼容问题,细分解决自身问题的结果。
wiki上memcached文档的中文翻译。纯粹是看的时候顺便翻译下来的,很多是由google帮忙的,方便自己看的。各位看后觉得不好自行删除,觉得可用请收藏,不追究版权问题。 另外,这个是官方说教式的,很多东西讲个概念,...
主要介绍了PHP 扩展Memcached命令用法,结合实例形式总结分析了PHP 扩展Memcached命令基本使用方法与相关操作注意事项,需要的朋友可以参考下
主要介绍了Redis和Memcached的区别详解,本文从各方面总结了两个数据库的不同之处,需要的朋友可以参考下
dot net memcached 分布式缓存应用类库 本人收藏了3年的资源 现放出 都是总结了很多系统 软件项目实施过程中的经验的 慢慢积累的
第1 章 memcached的基础.................................................................................................................5 1.1 memcached是什么?.............................................
20120102 net下memcached 分布式缓存系统应用 本人收藏了3年的资源 现放出 都是总结了很多系统 软件项目实施过程中的经验的 慢慢积累的
Memcached概念: Memcached是一个免费开源的,高性能的,具有分布式对象的缓存系统,它可以用来保存一些经常存取的对象或数据,保存的数据像一张巨大的HASH表,该表以Key-value对的方式存在内存中。 官网下载地址: ...