xcache和TCMalloc对php和mysql性能提升的评测
`平时上班基本没有定的下心的时候,晚上么时间不够,加上eswc很久没有双休了,今天终于有机会尝试了一下
环境:centos 5.1/apache 2.2.8/php 5.2.6/mysql 5.0.66a-enterprise-gpl
装了个干净的Discuz 6.1 关闭缓存 测试板块帖子列表显示页面 forumdisplay.php?fid=2&page=1
测试采用本机webbench
首先尝试关闭xcache和TCMalloc情况下的负载能力
采用1客户端10秒
webbench -c 1 -t 10 http://xxx/forumdisplay.php?fid=2\&page=1
成绩如下
Speed=1758 pages/min, 305745 bytes/sec.
Requests: 293 susceed, 0 failed.
Speed=1692 pages/min, 294267 bytes/sec.
Requests: 282 susceed, 0 failed.
Speed=1764 pages/min, 306789 bytes/sec.
Requests: 294 susceed, 0 failed.
Speed=1764 pages/min, 306789 bytes/sec.
Requests: 294 susceed, 0 failed.
Speed=1596 pages/min, 277571 bytes/sec.
Requests: 266 susceed, 0 failed.

采用5客户端10秒
webbench -c 5 -t 10 http://xxx/forumdisplay.php?fid=2\&page=1
成绩如下
Speed=2796 pages/min, 486271 bytes/sec.
Requests: 466 susceed, 0 failed.
Speed=3012 pages/min, 523837 bytes/sec.
Requests: 502 susceed, 0 failed.
Speed=2916 pages/min, 507141 bytes/sec.
Requests: 486 susceed, 0 failed.
Speed=2976 pages/min, 517576 bytes/sec.
Requests: 496 susceed, 0 failed.
Speed=2976 pages/min, 517576 bytes/sec.
Requests: 496 susceed, 0 failed.

下面只打开xcache和关闭TCMalloc情况下的负载能力
采用1客户端10秒
webbench -c 1 -t 10 http://xxx/forumdisplay.php?fid=2\&page=1
成绩如下
Speed=6270 pages/min, 1090457 bytes/sec.
Requests: 1045 susceed, 0 failed.
Speed=6216 pages/min, 1081066 bytes/sec.
Requests: 1036 susceed, 0 failed.
Speed=6222 pages/min, 1082109 bytes/sec.
Requests: 1037 susceed, 0 failed.
Speed=6318 pages/min, 1098805 bytes/sec.
Requests: 1053 susceed, 0 failed.
Speed=6012 pages/min, 1045587 bytes/sec.
Requests: 1002 susceed, 0 failed.
采用5客户端10秒
webbench -c 5 -t 10 http://xxx/forumdisplay.php?fid=2\&page=1
成绩如下
Speed=13368 pages/min, 2324918 bytes/sec.
Requests: 2228 susceed, 0 failed.
Speed=13992 pages/min, 2433442 bytes/sec.
Requests: 2332 susceed, 0 failed.
Speed=14130 pages/min, 2457442 bytes/sec.
Requests: 2355 susceed, 0 failed.
Speed=14034 pages/min, 2439853 bytes/sec.
Requests: 2339 susceed, 0 failed.
Speed=14304 pages/min, 2486660 bytes/sec.
Requests: 2384 susceed, 0 failed.
最后全打开xcache和TCMalloc情况下的负载能力
由于TCMalloc主要是提升mysql在高负载的情况下的性能,所以1客户端就不测试了。我们直接测试5客户端
采用5客户端10秒
webbench -c 5 -t 10 http://xxx/forumdisplay.php?fid=2\&page=1
成绩如下
Speed=14052 pages/min, 2443877 bytes/sec.
Requests: 2342 susceed, 0 failed.
Speed=13914 pages/min, 2417196 bytes/sec.
Requests: 2319 susceed, 0 failed.
Speed=13806 pages/min, 2400200 bytes/sec.
Requests: 2301 susceed, 0 failed.
Speed=13914 pages/min, 2419876 bytes/sec.
Requests: 2319 susceed, 0 failed.
Speed=14028 pages/min, 2439703 bytes/sec.
Requests: 2338 susceed, 0 failed.

从结果来看,确实xcache对于提高php的性能是相当显著的,但是并不是提高了就能直接用的,从测试的数据来看,在1客户端打开xcache后虽然性能从1700一跃到了6200,这个结果我想每个人看了都会热血沸腾,但是php的性能提高了必然的给mysql的压力就高了,从图中可以看到mysql的压力从62同样的也一跃到达了289。整个系统的负载虽然没变多少,但是很明显的,在打开xcache的情况下,整体性能得到了大幅度的提升。很明显在应用系统对mysql压力不大的情况下安装xcache会给处理性能带来质的飞跃。但是如果本身压力是在mysql的情况下盲目的上xcache反而会得不偿失。
google-perftools的TCMalloc很明显对与此次的测试压力完全没有发挥优势,TCMalloc是 Thread-Caching Malloc的缩写,相对于与标准的glibc库的malloc相比,在高并发的 mysql上面可以有效的降低系统负载。只是测试的负载太低,看来只能直接上生产系统看效果了。

