- 浏览: 99552 次
- 性别:
- 来自: 深圳
最新评论
-
shuhai42:
曙海嵌入式学院提供以下课程的培训--中国最大的FPGA,DSP ...
敏捷开发之路,未来软件开发的变革? -
kaki:
建议吸收大家意见,打包下载吧。
泛型dao架构实现,封装crud等基本操作 -
xuhbiao:
不错,学习了。。
泛型dao架构实现,封装crud等基本操作 -
danjp:
LZ
单从你DAO的借口定制来说,我觉得不是太好,特别是更新方 ...
泛型dao架构实现,封装crud等基本操作 -
danjp:
jeff312 写道mfdkydyw4 写道EXvision ...
泛型dao架构实现,封装crud等基本操作
1、客户端在与 memcached 服务建立连接之后,进行存取对象的操作,每个被存取的对象都有一个唯一的标识符 key,存取操作均通过这个 key 进行,保存到 memcached 中的对象实际上是放置内存中的,并不是保存在 cache 文件中的,这也是为什么 memcached 能够如此高效快速的原因。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。
2、当存入cached的数据超过了cached的容量后会将最长时间没调用的对象挤出,这正好应征了cached的特征。
3、利用memcached常用的做法:在每取得一次cached对象后,重新设置这个对象的cache时间,这样能够使得经常被调用的对象可以长期滞留在缓存中,使得效率增倍。
memcached 技术配置参数研究
failover表示对于服务器出现问题时的自动修复。
initConn初始的时候连接数,
minConn表示最小闲置连接数,
maxConn最大连接数,
maintSleep表示是否需要延时结束
nagle是TCP对于socket创建的算法,
socketTO是socket连接超时时间,
aliveCheck表示心跳检查,确定服务器的状态。
Servers是memcached服务端开的地址和ip列表字符串,
weights是上面服务器的权重,必须数量一致,否则权重无效
可从以下几方面考虑优化
1. 重新设置配置参数。
2. 尽量使用小容量的数据内容.
3. 增加memcached提高服务获取的内存总量、提高命中率。
4. 可以采用多个memcache服务进行侦听,分开处理,针对服务提供的频繁度划分服务内存
5. 根据服务器的性能不同设置权重 weights
6. 对需要使用memcache服务的机器ip,服务端做访问限制。
避免memcached里的数据不会被别有心意的人再利用,或责保证服务器的内存不被漫天遍地的垃圾数据所堆积,造成命中极低
7. 优化memcached客户端的代码。
1. synchronized 的问题
java memcached client源文件的大量方法里面都直接使用 synchronized 如 getConnection(), checkin() 等,而SockIOPool类似一个Singleton, 因此造成多线程失去了意义。同时 synchronized 方法里面又大量使用了 Hashtable 等synchronized保护的集合类。
2. InputStream 不优化的用法:
未加Buffer
private DataInputStream in = new DataInputStream( sock.getInputStream() );
一次读一字节
while (in.read(b, 0, 1) != -1)...
虽然说局域网的网速不存在问题,但是这样操作的话速度可想而知。
#59.151.6.168:11213 Field Value
bytes 965623799
bytes_read 22404152833
bytes_written 238164862015
cmd_get 212516055
cmd_set 74288082
connection_structures 1351
curr_connections 316
curr_items 4943569
evictions 49964
get_hits 102206841
get_misses 110309214
limit_maxbytes 1073741824
pid 3825
pointer_size 32
rusage_system 358294.510000
rusage_user 16239.670000
threads 1
time 1209023021
total_connections 135815
total_items 74288082
uptime 20711187
version 1.2.2
0.48
179==2008.05.04 统计
stats
STAT pid 4355
STAT uptime 5004865
STAT time 1209866040
STAT version 1.2.2
STAT pointer_size 32
STAT rusage_user 197.590000
STAT rusage_system 587.010000
STAT curr_items 741989
STAT total_items 3158492
STAT bytes 922004468
STAT curr_connections 20
STAT total_connections 1380
STAT connection_structures 52
STAT cmd_get 3239347
STAT cmd_set 3158492
STAT get_hits 1765546
STAT get_misses 1473801
STAT evictions 1
STAT bytes_read 3731783494
STAT bytes_written 2126404906
STAT limit_maxbytes 1073741824
STAT threads 1
END
0.54
memcached 1.2.0
-p <num> port number to listen on
-s <file> unix socket path to listen on (disables network support)
-l <ip_addr> interface to listen on, default is INDRR_ANY
-d run as a daemon
-r maximize core file limit
-u <username> assume identity of <username> (only when run as root)
-m <num> max memory to use for items in megabytes, default is 64 MB
-M return error on memory exhausted (rather than removing items)
-c <num> max simultaneous connections, default is 1024
-k lock down all paged memory
-v verbose (print errors/warnings while in event loop)
-vv very verbose (also print client commands/reponses)
-h print this help and exit
-i print memcached and libevent license
-b run a managed instanced (mnemonic: buckets)
-P <file> save PID in <file>, only used with -d option
-f <factor> chunk size growth factor, default 1.25 growth factor //chunk 块 增长系数
-n <bytes> minimum space allocated for key+value+flags, default 48
分配
尝试:
启用了PHP memcache_set()函数中的 MEMCACHE_COMPRESSED压缩选项,而memcache_get()可以在后续读取过程中自动对压缩的缓存对象进行解压缩。
效果:
测试了一下,对于博客大巴目前的应用来说,启用压缩后,相同的容量(2G)存储的对象数量增加了约一倍,缓存命中率从50%左右,提高到了60%左右。进一步提高命中率硬件投入还是必须的,又增加了2倍的内存后终于做到了缓存命中率提高到90%;
前提0: 内存缓存有用,且命中率值得提升;
从60%提高到90%,还是从90%提高到95%,要看hit后的性能能够提升是否值得;
前提1:MemCached已经用满
先用memcached-tool查看一下memcached的容量统计,看memcached是不是已经用满了。如果充分运行时MemCached的空间尚未用满,启用一下压缩是没有意义的; 而且:发现没有用满的MemCached,最好减少相应MemCached的容量,空余出更多内存给其他服务做缓存;
前提2: 压缩率
缓存的数据的确有大于几百字节的,如果都是小于100字节的键值对,压缩可能反而带来膨胀。由于缓存对象的大小在Memcached中都是按照固定大小分块存储的,最小也要88 B。所以对于过小数据带来的压缩膨胀并不是太大的问题;
前台应用的CPU损耗:
对数据的额外压缩CPU损耗远远低于缓存命中率提升减少后台数据库访问带来的性能提升,和http的gzip/deflate压缩类似,压缩后数据一般为原数据大小的30%左右,节省了70%的传输性能消耗所得会大于文件压缩带来的性能损耗;
# Item_Size Max_age 1MB_pages Count Full?
3 128 B 535047 s 1 2 no
4 160 B 19734117 s 196 1284388 yes
5 200 B 2753659 s 401 2102042 yes
6 252 B 1135150 s 321 1335680 yes
7 316 B 7923261 s 1 3318 yes
8 396 B 9449969 s 1 2647 yes
9 496 B 20639438 s 101 213502 yes
10 620 B 20704497 s 1 509 no
11 776 B 20711541 s 1 838 no
12 972 B 20608682 s 1 642 no
13 1.2 kB 15213297 s 1 7 no
Item_Size是我们储蓄实体大小的范畴
Max_age是所有实体存活的时间集合,单位是秒
Count是实体数目
1MB_pages?
Full?是存贮空间满了没?
HTTP压缩对于纯文本内容可压缩至原大小的40%一下,从而提供60%以上的数据传输节约,虽然WEB服务器会因为压缩导致CPU占用的略微上升,但是可以节约大量用于传输的网络IO。对于数据压缩带来的用户浏览速度提升(让页面符合8秒定律),这点总体负载5%-10%上升是非常值得的。毕竟通过数据压缩会比通过不规范的HTML代码优化要方便得多。
评论
lz用的wahlin的memcached client
这个应该是他维护socket pooling的间隔时间吧
另外请教lz有没有碰到wahlin memcached client在red hat下pipe资源泄露的问题?
发表评论
-
ExtJs+struts+spring+mybatis通用管理后台程序框架
2015-01-20 10:08 1203花了一段时间学习Extjs,总算学有所成,并在项目中有成 ... -
Oracle JOB问题解决汇总
2009-05-23 22:58 3700一。job的运行频率设置 1.每天固定时间运行,比如早 ... -
PostInsertEventListener 插入发生死循环问题
2009-01-15 11:18 2132package com.easou.ad.listener; ... -
怎么让文章自动适应表格
2009-01-09 23:24 887style="word-break:brea ... -
敏捷开发之路,未来软件开发的变革?
2008-12-27 19:51 3517敏捷开发这个名词已经不是第一次听到了,大家都推崇它好,就算是华 ... -
spring hibernate 事务配置 2
2008-11-27 00:13 1179<bean id="txProxyTempl ... -
spring hibernate 事务配置
2008-11-27 00:07 1410<!--事务拦截器,激活事务管理器所必须的bean ... -
我也SHOW下JDBC底层操作工具类
2008-11-10 11:15 3343/* * JDBCUtil.java * * ... -
泛型dao架构实现,封装crud等基本操作
2008-11-10 11:07 4244今天闲着没事,根据公司 ... -
项目沟通7个好习惯
2008-11-07 13:17 876写道 简介 项目沟通7个好习惯 习惯一:态度积极 习惯二:牢记 ... -
webwork+hibernate+spring项目源代码自动生成(附源代码)
2008-11-05 22:39 1512自己写了一个自动生成源代码的工具,代码自动生成,以及一个完整项 ... -
eclipse快捷键大全
2008-11-02 20:58 8271. 常用快捷键 (1)Ctrl+Space 说明:内 ... -
一个js写的StringBuffer类
2008-11-02 11:15 1321function StringBuffer() { this ... -
Spring jdbc 操作实例
2008-11-02 11:09 3137package com.szxhdz.dao; import ... -
oracle分页
2008-11-02 11:07 903从taba中获取第1到10条记录 select * fro ... -
转载40种网页常用小技巧(javascript)--备不时之需
2008-11-01 18:16 912• 转载40种网页常用小技巧(javascript)--备不时 ... -
webwork和spring整合
2008-11-01 18:11 1264始终没有搞明白在appfuse中是通过什么方式将webwork ... -
Struts标记库
2008-11-01 18:10 850Struts标记库JSP视窗组件 ... -
springIOC
2008-11-01 18:07 892首先想说说IoC(Inversion ... -
Spring+Hibernate+Struts框架分页
2008-11-01 18:06 1176我用的是Spring+Hibernate+Struts框架: ...
相关推荐
MemCached Cache Java Client封装优化历程
Memcached的封装优化及相关操作api,详细介绍了memcached的使用和配置,以及对其的封装优化
memcached是什么?谁在用memcached? memcached的特征介绍 memcached示例说明 memcached的优化点
memcached安装及使用,以及简单的需要优化的注意点
memcached服务器端(win、linux) 博文链接:https://sosuny.iteye.com/blog/420110
Memcached负载均衡分析以及优化策略的设计,王浩,张雷,本文介绍了Memcached负载均衡机制,并对该机制进行分析,通过实验进行测试得出当对数据的访问服从zipf分布时,会出现冷热数据访问带��
Memcached Cache现在已经被大家广泛使用,但是千万不要认为对Cache的操作是低损耗的,要知道这类集中式Cache对Socket连接数(会牵涉到linux操作系统文件句柄可用数),带宽,网络IO都是有要求的,有要求就意味着会有...
Tomcat+MemcachedRedis集群,有视频实战以及源码。包含Tomcat性能优化,Redis基础入门以及使用场景,性能优化
这里需要有点说明,很多开发者觉得Memcached是一种分布式Cache,但是其实Memcached服务端本身是单实例的,只是在客户端实现过程中可以根据存储的主键作分区存储,而这个区就是Memcached服务端的一个或者多个实例,...
个人认为比较全面 memcached 指导书籍 可以为面试提问优化问题做准备
memcached缓存技术,优化程序的开发
关于这个东西,相信很多人都用过,本文意在通过对memcached的实现及代码分析,获得对这个出色的开源软件更深入的了解,并可以根据我们的需要对其进行更进一步的优化。末了将通过对BSM_Memcache扩展的分析,加深对...
CentOS下Nginx0.8.52-PHP5.3.3-MySQL5.5.6-Memcached1.4.5安装配置优化详解
缓存在内存中的超好用的缓存模式,是优化网站的最好帮手,大家可以好好学习,好好利用,好东西大家一起分享
memcached 1 安装 2 优化
本文实例讲述了Laravel使用memcached缓存对文章增删改查进行优化的方法。分享给大家供大家参考,具体如下: 这里我们将以文章的增删改查作为实例系统讲述缓存的使用,这个实例是对之前创建RESTFul风格控制器实现文章...
关于这个东西,相信很多人都用过,本文意在通过对memcached的实现及代码分析,获得对这个出色的开源软件更深入的了解,并可以根据我们的需要对其进行更进一步的优化。末了将通过对BSM_Memcache扩展的分析,加深对...
performance是 基于master分支上优化后的。性能比master分支要好。