memcache、apc性能比较

最近在开发的时候,由于对用户体验要求较高,要是每次都去通过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.5149.6139.253.1
第二个100次操作的平均值10.1158.1138.954.2
第三个100次操作的平均值9.5154.9139.652.8
第四个100次操作的平均值9.6163.5137.953.2
第五个100次操作的平均值9.6156.7135.453.4
第六个100次操作的平均值9.6148.9138.854
第七个100次操作的平均值9.6145.6136.652.8
第八个100次操作的平均值9.6139.7137.352.9
第九个100次操作的平均值9.7168.514053.5
第十个100次操作的平均值9.7168.3139.252.9
10000次操作的平均值9.65155.38138.2953.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的容量。

 

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值