设为首页收藏本站

UNIX技术社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
热搜: console
查看: 1810|回复: 0

memcache、apc性能比较

[复制链接]
发表于 2012-7-20 02:39:33 | 显示全部楼层 |阅读模式
最近在开发的时候,由于对用户体验要求较高,要是每次都去通过db加载数据的话,不但速度慢而且当访问量大的时候还容易造成db数据库down机,所以考虑使用memcache进行开发。
在memcache开发过程中,遇到一些问题:
在本地完成代码测试一个鼠标hover上去然后去服务器拿一个400B的数据的时候,只需要大约16ms的时间就可以完成,当时感觉这个速度好快呀,基本不会影响用户体验的。但是布置到线上之后,同样的一个鼠标hover上去请求一个400B的数据,却需要60~90ms的时间,偶很不能理解,不知道为什么出现这个问题。
后来做了一个测试,是把一个135K的数组分别保存到三台不同服务器以及使用apc本机缓存的测试,以下是每次进行100次的读写操作的平均时间:

(单位为ms)


127.0.0.1memcache192.168.1.31远程memcache192.168.1.32远程memcache
apc
第一个100次操作的平均值
9.5
149.6
139.2
53.1
第二个100次操作的平均值
10.1
158.1
138.9
54.2
第三个100次操作的平均值
9.5
154.9
139.6
52.8
第四个100次操作的平均值
9.6
163.5
137.9
53.2
第五个100次操作的平均值
9.6
156.7
135.4
53.4
第六个100次操作的平均值
9.6
148.9
138.8
54
第七个100次操作的平均值
9.6
145.6
136.6
52.8
第八个100次操作的平均值
9.6
139.7
137.3
52.9
第九个100次操作的平均值
9.7
168.5
140
53.5
第十个100次操作的平均值
9.7
168.3
139.2
52.9
10000次操作的平均值
9.65
155.38
138.29
53.28


    通过以上的数据可以看出,在本机环境下的时候(127.0.0.1),memcache的性能远远高于apc的性能,提高性能大约400%;但是在使用远程的memcache的时候(在内网环境),memcache的性能比(127.0.0.1)的性能降低了大约13~15倍之多,比使用apc的性能也降低了3倍之多。
    因为在(127.0.0.1)以及(192.168.1.31)、(192.168.1.32)上面安装的memcache是相同的版本并且所有的配置都是相同的,memcache的协议也相同,memcache的内存管理机制也是相同,数据缓存删除机制也都是使用的Least Recently Used(LRU)最近最少使用原则,性能差别如此之大,肯定不会因为配置、协议以及memcache使用的机制的原因,究竟为什么出现这个问题呢?
    通过查阅相关资料知道memcached的客户端使用TCP链接与memcache服务器通讯。一个运行中的memcached服务器监视一些(可设置)端口。客户端连接这些端口,发送命令到服务器,读取回应,最后关闭连接。 才确认这个问题是出在TCP连接上了。(192.168.202.133和192.168.202.157)host上的memcache比(127.0.0.1)host上的memcache多出来的大约140ms的时间就是花费在了发送命令到memcache服务器,等待服务器返回上了,要是需要去解决这个问题,唯有去优化app主机和memcache主机之间的网络连接,才能对这个140ms的时间去进行优化,也许这就是一些小型项目不推荐使用memcache的原因吧,这也应该就是memcache的一个小小的瓶颈了吧。
    如果你的是中小型网站的话,或者网站不是分布式的话,使用apc完全可以满足你的要求了,并且在性能上也完全可以满足要求了;
    如果你的是大中型网站的话,或者网站对用户体验性要求比较高并且是高分布式的话,还是使用memcache的比较好一点,并且memcache具有一个apc没有的优势就是方便集群,当数据量增大的时候可以通过添加memcache服务器来增加memcache的容量。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表