2009年3月25日 星期三

memcached性能测试

找了一台机器测试了一下memcached的效果,测试数据共30000条,大概是100m左右,设置的memcache内存为300m,在实际运行过程中占用了200m左右,也就是说每1m数据用memcached放在内存中后就会变成2m,这应该是包括建立索引等等需要的空间。

程序是随机访问数据库,对于non-memcache,循环100w次需要3000秒,而对于memcache,循环1000w次才需要3000秒,所以对于内存大于数据库两倍的情况下,这时候如果把所有数据都放在内存中而且设置成不失效的话,那么使用memcache的速度可以是non-memcache的速度的10倍,但是在实际情况下,因为硬盘数据远远大于内存数据,而且设置的失效时间可能会影响hit的成功率,特别是当访问量很小的时候,使用memcached反而会使程序整体速度变慢。

在使用windows下的memcached的时候,发现不管怎么设置memcached,给予memcached都是固定的64m(也就是memcached的默认值),很奇怪,不知道有什么解决办法,后来就放在Mac OS X 10.5.6上进行的测试(硬件是:AMD 3000+ ,2G DDR667内存,500G SATA2 7200硬盘)。

所以,对于小型网站,最好不要使用memcached, 特别是内存远小于频繁数据(这些数据都会被用户频繁读取)的时候。当然,对于日访问量上千万我觉得使用memcached确实可以达到很好的效果,而且加上采用分布式的话,这样共享的内存可以更大,效果会更好,还有一点,当内存小于硬盘数据的时候,CPU的占用率会突然变高,可能是因为要执行LRU算法(也就是替换原来内存中的数据)。很多东西都要在实际中才能知道,我也是通过了这次测试才发现原来memcached并不适合我先改进的一个小型网站(日访问量也就100w)。

沒有留言:

張貼留言