浏览 3196 次 / [ 天下网闻 ] 用memcache和XCache解决DZ程序 CPU占用高 访问慢的问题
  • 发布时间 2013-12-19 04:54
  • DOOOOR设计网访问速度虽然在更换服务器后有所提升,较同类网站依然偏慢,于是howfar安装了memcache和XCache,一年前也想过开启此功能,无奈没找到菜鸟级的合适教程,今天很巧,参考本文和其他一些资料,网站响应时间从809毫秒提升至133毫秒,最终实现秒杀级提速 。

    --------------------------------------------------------

    06年从动网论坛转到DZ开始,一路从4.0-7.2  再到X2 及X2.5 一直在用DZ,从X版本开始,功能是多了,但速度和资源占用也增大了,特别是X2.5,用了2年多的X2,十一升级成了X2.5 问题也就来了,8核 处理器8G内存,以前跑X2时CPU占用不到50% 升级后 时不时的就长时间100%占用,关插件 优化等等 都不管用,折磨了2个多月 此期间不断的考虑各种方法来优化最后安装了 memcache  和 XCACHE解决了,特别是xcache
    设置如下,仅供参考
    ————————————————————————————————
    运行环境:IIS7.5  PHP5.2.17 (ISAPI方式)mysql 5.1   memcache    xcache1.3.2


    1、首先 X2.5 你要后台作一些设置 可以参考这个贴子,强烈不建议 进行 用户表优化,这个半成品功能 最好不要用 http://www.discuz.net/forum.php?mod=viewthread&tid=3157120


    2、安装memcache  for 5.2.17
    http://www.doooor.com/forum.php?mod=viewthread&tid=10788&extra=page%3D1 按照此帖介绍来安装

    其中要注意:默认memcacahe使用内存是64M 有点太小了 用光了就会 提示 OUT错误,在注册表中加上系统启动时自动指定其占用的内存大小,根据你的服务器的内存大小来决定,我内存较大 设为1024M,另外memcache 运行本身不怎么占用CPU,但时间长了后就会增大CPU的占用,根据你的访问量,定期 重启服务器就可以解决了。
    开始 --运行--regedit
    在注册表中找到:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\memcached Server
    默认的ImagePath键的值是:"c:\memcached\memcached.exe" -d runservice,
    改为:"c:\memcached\memcached.exe" -d runservice -m 1024(确定,关闭注册表) 重启服务器,这样就改为1024M了(注意 空格 和大小写)


    安装上memcache后 基本上可以秒开论坛了,不过CPU还是占用高,怎么办,我就是卡在了这步2个月,最后安装了XCACHE后解决了

    3、安装  XCache-1.3.2-php-5.2.17-Win32-VC6-x86
    下载:http://xcache.lighttpd.net/pub/Releases/
    我试过 3.0 2.01 几个版本 都没有成功,最后试1.3.2成功了
    打开页面在0.0*-0.2秒左右,很快 cpu也降到50%以下


    C:\Windows\Temp (你的PHP 的TEMP目录)目录需要添加Users的读取写入执行权限。
    解压XCache-2.0.1-php-5.2.17-Win32-VC6-x86.zip文件,


    把解压出来的 php_xcache.dll 放入到你的PHP目录下的\ext目录内


    然后 把下面代码添加进php.ini 末尾。(注意修改其中的PHP目录成你的)

    1. [xcache-common]

    2. zend_extension_ts = "d:/php/php/ext/php_xcache.dll"

    3. [xcache.admin]

    4. xcache.admin.enable_auth = On

    5. xcache.admin.user = "admin"

    6. xcache.admin.pass = "21232f297a57a5a743894a0e4a801fc3"

    7. xcache.size  = 512M

    8. xcache.count = 2
    9. xcache.var_size =64M
    10. xcache.var_count =2
    复制代码
    如果有ZEND,要把本代码放到zend之上(我去掉了zend代码)
    zend_extension_ts = "d:/php/php/ext/php_xcache.dll" 要换为你的PHP路径
    其中的512M和64M是根据服务器的内存来设置的。默认是64M和16M
    在php.ini中查找 extension=php_zip.dll 在其之下加入一行 extension=php_xcache.dll 从而让XCACHE加载
    在X2.5的CONFIG目录下 config_global.php 文件中  $_config['memory']['xcache'] = 0; 改为 $_config['memory']['xcache'] = 1;


    ------------------------------------

    :howfar的php.ini上就有ZEND,本代码放在底部的时候,网站竟然打不开了,发现我的原php.ini文件最上方是:
    1. [Zend]
    2. zend_extension_manager.optimizer_ts="D:\SOFT_PHP_PACKAGE\Zend\lib\Optimizer-3.3.3"
    3. zend_extension_ts="D:\SOFT_PHP_PACKAGE\Zend\lib\ZendExtensionManager.dll"
    复制代码
    将本文代码贴到最最头部(如下图)就一切正常了。


    01010101.jpg