这几天折腾了一下网站的优化,虽然对于中小网站来说,优化没有很大的意义,但至少自己访问速度提升心理还是很爽的。分享一下这次实践过程中积累的一个经验:
我当前的几个vps和弹性云都是单机服务器,因此这个问题是有价值的,而且对于90%的站长来说,估计都是用的单机vps,部署集群服务器的草根站长估计不会很多。
1、memcache单机个人使用体会:
由于看着discuz官方是用的memcache,因此包括我在内的很多用discuz的站长都用这个内存优化工具,同时wdcp这个被广泛采用的linux面板也集成了memcache,开启非常的方便,所以很多论坛都自然的开启了。
以前包括恒星兼职论坛在内的网站都是开启了这个内存优化,看着底部的数据库查询次数确实有很大的减少,从平均的40次左右下降到10次左右。但是我感觉速度没有很大的提升,反而还不如不用memcache优化时候的速度,并且这种感觉是非常明显的!我随便打开一个页面都要卡一会儿,虽然底部显示的程序运行时间是0.x秒级别,但实际感受根不止,每次都要等很久。
我开始以为是加速乐开启的问题,关闭了加速乐也是一样的慢,关闭了memcache优化后,速度明显有上升,虽然数据库查询次数多了,但实际感受速度快了很多。因此,我琢磨换其它加速工具试试,同时也了解了一下几个加速的异同。
2、memcache加速和APC/Xcache/eAccelerator的异同
这几个都是常用的加速工具,但原理是有一定区别的。
Memcached是“分布式”的内存对象缓存系统,那么就是说,那些不需要“分布”的,不需要共享的,或者干脆规模小到只有一台服务器的应用,memcached不会带来任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源,即使是UNIX本地连接也一样。 在我之前的测试数据中显示,memcached本地读写速度要比直接PHP内存数组慢几十倍,而APC、共享内存方式都和直接数组差不多。可见,如果只是本地级缓存,使用memcached是非常不划算的。(转的一段话,应该描述是准确的,我看很多朋友都这么说)
APC/Xcache/eAccelerator这3个是php加速工具,加速的是php程序的执行效率,和memcache是有很大区别的。
3、为什么单机服务器不用memcache而要用APC/Xcache/eAccelerator呢
memcache适合多服务器使用,是内存缓存加速,假如是集群服务器部署,那使用memcache会极大的减少数据库查询次数,提升程序实现效率。单机由于memcache需要使用网络资源,反而会降低速度!
但APC/Xcache/eAccelerator是php加速工具,提升的是php代码的执行效率!不管是单机还是集群使用都有效果。
所以在单台服务器的情况下,APC/Xcache/eAccelerator等php加速工具的效果远远高于memcache。
4、实际使用情况评测:Xcache效果好于memcache
由于跟版网是单台西部数码主机(弹性云),符合上述情况。先前开启的是memcache内存优化,实际效果确实不咋的,比不开启任何优化速度还蛮,虽然减少了数据库查询次数,但网页打开速度很慢,甚至慢到我不能忍受的地步,否则我也不会去找这个问题!和换其它的优化加速工具,假如速度可以接受,谁愿意折腾呢?都以论坛首页为例:
单机开启memcache效果:数据库查询次数由40左右下降到10左右,减少的很多,程序执行时间首次x秒左右,第二次开始0.x秒,从来没有达到过0.0x秒级别,实际感受速度那是非常的慢!慢到我无法忍受以至于不得不关闭和更换其它的。
单机开启Xcache效果:数据库查询次数由40左右下降10-20次左右,减少的也不错,但效果不如memcache减少的多,必须承认。发现一个问题,就是每天首次访问网站的时候速度会较慢,达到x秒级别,不知道是否所有php加速都是这样?大部分时候是0.2秒左右,这个比memcache效果好很多了,加快了5倍左右,提升明显;第二次开始下降到0.0x秒,一般在0.05秒左右!继续提升似乎很难了,与硬件的性能有关系。关键是打开网页感受速度有非常大的提升,基本上一点就开,感觉很爽,唰唰的,不像以前要卡顿一下。(至于继续优化到0.00x秒级别,我没那技术,感觉也没那必要,因为0.0x秒以后的提升,人访问已经无法感受出来了!)
单机开启APC/eAccelerator的效果:APC我安装了并且现在用着,效果和Xcache差不多的,都能够达到0.0x秒级别,由于APC不能和zend一起使用,因此我关了(实际我现在也只用了Xcache,和zend一起没测试成功,估计也提升不了多少,懒得折腾了)。eAccelerator我另外一个论坛安装了,速度非常的快,比apc和Xcache效果都要好,但是这个加速工具有些问题,不是很稳定,我放弃了(很多网友都反应eAccelerator单机小流量加速效果比apc和x好多很,有兴趣的朋友可以自己测试哦)。
结论:假如你是单台服务器或者vps,那建议使用APC/Xcache/eAccelerator这类php加速工具,而不用要memcache内存优化(相信大多数站长和我一样,都用单台的,而且根本都用不完呢!当然了还有更多的朋友用的虚拟主机,是折腾不了这些优化工具的)。假如你是集群服务器,有负载均衡的,memcache效果要好很多,具体没测试。
同时,在小流量的情况下(1万流量以下的都是小流量网站),php加速工具随便选一个就可以,没有很大的区别,没有必要纠结。
1、建议只选一个优化工具:速度是一个方面,稳定性更是压倒一切,小网站还是少折腾,开一个加速工具就行了,安心做内容吧。
2、几个冲突的地方:APC不能和zend一起开启;Xcache可以和zend一起用,但需要先加载Xcache再加载zend(我自己没折腾成,把zend关闭了);APC/Xcache/eAccelerator同时只建议启用一个,多了网站会有问题。
我今天就遇到个奇怪的事情,论坛可以正常打开,但主站后台无法访问,老出现503错误,折腾半天才明白,是因为在php.in里面APC/Xcache/我都开启了,但是论坛程序默认只开启一个优化,所以可以正常访问,但织梦程序似乎都开启了,造成无法访问!关闭了apc后,主站恢复正常了。
不想冲突的最好方法,就是只装一个加速,够用了,而且稳定。
3、php加速是给所有的程序加速,其实memcache也一样,但我起先是折腾论坛的,后来发觉开启Xcache后,织梦后台的速度杠杠的!点击任何一个页面都是瞬开!这倒是么有想到,其实这个问题很傻鸟,因为加速的是php程序,当然这个服务器下面的所有网站都加速了……
4、建议给单机的discuz和wordpress开启至少一个php加速工具,常用的有APC/Xcache/eAccelerator这3个,效率提升效果非常的明显。
5、假如你的网站最终是生成静态的,那就不需要开启任何加速了!比如只有dedecms/phpcms/zblog,并且最后都生成了静态页面(伪静态的话建议开哦),那没有必要做任何的内存优化,这个优化只对动态内容有效果,需要查询数据库的,静态内容是么有用的。能够加速的就是一个后台,没啥意义。
6、不管是linux还是win系统,都是可以安装php加速的。
以上内容,对于老手来说都是很容易甚至很傻的问题,但对于我们自学的草根站长来说,还是要花费一段工夫来了解的,因此记录在这里,给有需要的朋友参考,同时自己也积累点经验,方便以后查阅。