欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

如何增进效能 里面仔细看看 就会发现 有大用

shiping1 的头像

如何增进效能

Dear ALL :

我还是Drupal系统调校的菜鸟
随着安装模组的增加, 
发现每当required一个网页时,花的时间越来越长
可是我不清楚如何去观查我的问题在哪里
我装了devel module 
看到了drupal捉资料的时间
可是专业度不够
不知道如何下手
首先,要如何去发现影响系统效能的元凶
我要从哪些角度去观查???? 
web server设定
php设定
mysql设定
或者其它的东西

请教大家宝贵的经验

artt's 的头像

Re: 如何增进效能

这真是一个大的问题!

开一个网页有超过3 秒吗?(其实不会这么慢。一般来说除了模组管理之外,一秒以内应该都能开出来。)

如果是在windows 上开发嫌慢的话,其实这是正常的。我在windows, linux 与mac 上都有在开发(linux 上面我只是玩玩,主要在mac 上开发)。在windows 上,有时随便开一个网页都会time out。可是在mac 上面,从没碰过这个问题,「刷」一下就出来了。

如果在网站上超过3 秒的话,那真的要解决了。因为google 在认识你的网站的时候,也会测速度。速度慢的网站,搜寻排名时会排在后面。

一般来说,会先试试使用cache。再进一步探讨的话,要看你的网站是做什么应用。

by the way,可以使用chrome 的开发工具测看看下载网页时,慢在哪里。

Art ( 无有多少 | 通通学 )

artt's 的头像

Re: 如何增进效能

不知是否我失忆还是有相似的主题,我好像之前回过这个贴子...

Windows的PHP在大量读取目录档案差效能很差,一般处理也差一点,一些很基本的页面,差50~100% (PHP 5.3好一点) 
Mysql在Windows & Linux的连接时间大约有30ms相差(固定增值),Mysql 5.5以上好一点,但在很小的应用中,应该是没有大差别

像Drupal 7, 很多新手都应该偶然觉得进入时很慢,这由于执行内置CRON引起,关一关就没事
有时会timeout,也可能是request update资料(特别是firewall封锁了,就至少待个30秒,如果刚好你的PHP执行时间只有30秒,大概只有看见timeout)

Devel中有: 
Display query log 
Display page timer 
Display memory usage

打开看看就知问题

也可以设定XHProf / Xdebug 深入一点:)

--- notaBlueScreen

artt's 的头像

Re: 如何增进效能

原来PHP 在windows 底下效能有差。一开始我只能确定这真的是windows 的问题,因为我在Mac, Linux 底下使用Drupal 从没有这么慢过,还慢到timeout!! Firewall, 防毒甚至都为它关闭了说。简直就是二个不同的世界。!@#$%^

那么,是否不建议使用windows 的虚拟主机作为Drupal 的平台?还是说不同的windows 版本(如windows server 2xxx, 一阵子没摸windows server,不知道现在的版本叫什么。),会有显著的不同效能差异?

愿闻其详。

Art ( 无有多少 | 通通学 )

agrozyme's 的头像

Re: 如何增进效能

主要是因为Windows使用NTFS作为底层的档案系统。
我有朋友曾经在Windows下装一个VM跑Ubuntu,结果在VM里面的网站跑出来的速度甚至比Windows下直接跑的还快~

artt's 的头像

Re: 如何增进效能

对对,我就是这么做的。

让我想起在解决windows 底下速度慢的问题时,在drupal.org 上看到一个结论:在windows 上安装ubuntu 的vm,然后在ubuntu 上面开发。

另外还有一个比较多人支持的结论:改掉amp工具中的apc, eacceralator,换成zend server,可以得到提升五倍的速度。( my solution: zend server )

只是这二个工程都不小。

不知tokimeki 是在哪种作业系统上操作?

Art ( 无有多少 | 通通学 )

agrozyme's 的头像

Re: 如何增进效能

换成zend server这个我干过,的确工程不小,不过我要讲,这个加速效果在PHP 5.3以上比较明显。
原因是PHP 5.2的fastcgi还是很烂~

我目前还是在Window 7上做,不过东西都丢到RAMDISK上,所以还好~
话说Drupal 7 for Portable APM (PAPM)这个很久没更新了,今天下午来搞这个好了。

artt's 的头像

Re: 如何增进效能

哇,受教了,果然提问还是对的。

我觉得你提到的使用ramdisk 方法最好,最简单,又不用更换作业系统环境,又马上有效。

对啊,这么简单的作法,我们这些老工程师在20 几年前几乎都用这个方法。呵,脑袋不灵光。

找个时间,我也来试一下PAPM.

@superman,

建议你使用ramdisk 这个方法。不需要再学习/ 转换别的作业系统了。

Art ( 无有多少 | 通通学 )

agrozyme's 的头像

Re: 如何增进效能

RAMDISK我之前在网路上找了一堆资料,最后是决定买VSuite的标准版,换算下来一千多台币,可以终身使用,给需要的人参考~

artt's 的头像

Re: 如何增进效能

装好了,马上有效果。感谢,解决半年来头痛的问题。

Art ( 无有多少 | 通通学 )

artt's 的头像

Re: 如何增进效能

有实际运行数据能分享一下吗??

PHP 5.3 fastcgi应该会好一点(看别人说) 
所以不用Zend,用IIS 7+应该也一样??

我用NGINX + PHP5.3 试过,也不是我想要的效能

--- notaBlueScreen

artt's 的头像

Re: 如何增进效能

为了你这个问题,我又重新测试了一下。测试的网页就跟在drupal.org 中看到的,大家讨论windows 下的速度时,都以开启模组管理页面的时间来作评比。

方法:重头开机(避免windows 自己的cache), 启动twamp, 进入首页, 接下来,测试开启模组管理页面的速度。

未使用ramdisk: 15秒。
使用ramdisk: 9秒。

只是还没有到达在mac / linux 底下的速度。我想这是作业系统的差异吧。我开启mac 中的drupal 7 (这个装了更多的模组),结果是3 秒。

Art ( 无有多少 | 通通学 )

artt's 的头像

Re: 如何增进效能

Windows 7 64bits + PHP 5.3.6 + Apache 2.2 + Wincache + mod_fcgid 非常好,更优于virtualbox 下的LAMP。

首页,10 个有图片的nodes:

Windows: 
Executed 52 queries in 67.3 ms. Queries exceeding 5 ms are highlighted. Page execution time was 167.33 ms. Memory used at: devel_boot()=0.6 MB, devel_shutdown()=3.1 MB, PHP peak=3.5 MB.

Virtualbox Linux: 
Executed 52 queries in 9.97 ms. Queries exceeding 5 ms are highlighted. Page execution time was 316.52 ms. Memory used at: devel_boot()=0.36 MB, devel_shutdown()=3.4 MB, PHP peak=4 MB.

在此配置的Windows,载入模组页面只要: 5xx ms (比一般非fastCGI/Wincache 应快上1.x ~3.x+)

( 
不过比较有点不公平,
Virutalbox Linux是PHP 5.2 + HDD 
Windows Apache是PHP 5.3 + SSD,
不过在此最重要是如何提升效能,不公平也不要紧,
之前非Wincache + mod_fcgid设置,也在SSD,也很差
)

大家可以试一试,
我过两周有空再深入一点分享/比较:)

artt's 的头像

Re: 如何增进效能

Dear ALL :

谢谢Artt and Kay.L的分享
效能的改善真的是很大的学问

因为时间的考量, 
所以我应该在mac or linux的环境开发

请问mac or Linux 何者更利于drupal的开发

artt's 的头像

Re: 如何增进效能

@Superman,

在Linux下应该是最好的,说效能,你只是在Dev Site,其实也有差别,但也可能是你能忍受的差别(每人的忍受能力不同) 
自己试一试最好,下一个Virtualbox,再安装,花不了多少时间

我分享不好的地方:你要从Windows复制档案(小的档案,如Drupal)至Linux内会很慢,经常要用搜寻档案内容功能的也很慢
不过,你可以不传小档案,或只会等待一次这么多,搜寻直接在Linux执行,不经你的Windows IDE

Linux下的GIT / Drush方便太多(个人觉得) 
--- notaBlueScreen

artt's 的头像

Re: 如何增进效能

再做另类尝试
VMware + shared folder效能很佳!!!

Executed 52 queries in 5.63 ms. Queries exceeding 5 ms are highlighted. Page execution time was 179.5 ms. Memory used at: devel_boot()=0.59 MB, devel_shutdown()=3.29 MB, PHP peak=3.75 MB.

这回不怕读取档案慢了,绝对适合喜欢LINUX 的用户

artt's 的头像

Re: 如何增进效能

呵呵,只要使用linux,效果都不错。这样的话,跟在drupal.org 中讨论的结果一致:在windows 中使用linux。哈哈,只是这样的话,我不觉得是「解决在windows 下速度慢的问题」。但是这个却是大家最赞同的好办法。

使用shared folder 是个好办法。我使用的是mac,其中也有装windows,就是利用shared folder 进行资料的交换,不需要再copy 一次,蛮好用的。

请问virtual box 可以这么做吗?还是只有vmware 才有shared folder 的功能。

tky's 的头像

Re: 如何增进效能

virtualbox没问题,shared folder好用的不得了。

tky

artt's 的头像

Re: 如何增进效能

这个有趣,我之前试没效果,是用Ubuntu SERVER edition (有可能装了有BUG旳VBOX工具) 
现在用Desktop版本,数据很不同

我再来试试:http://bit.ly/lUF53J

这样来看,
如果你不用LINUX工具,或特殊原因,在Windows下加FASTCGI + WINCACHE是最好,不用弄这么多东西,
否则选择VirtualBox

太好了,我最爱的VirtualBox能留下
上面的结果,作为Dev平台很足够了

** (一会再新安装SERVER 版本在VirtualBox 看看)

EDIT: 
重新安装Ubuntu 11.04 SERVER,没问题
Ubuntu 9.04 SERVER,即使是同一版本的VBOX addon都是慢
所以大家遇上慢,不妨多试试

artt's 的头像

Re: 如何增进效能

从Kay 提供的资料,看起来ubuntu 11.0.4 加上VBox 真的不错。

另外,加上wincache 后的效能不错嘛,这样可以不用换到linux。

感谢分析。

artt's 的头像

Re: 如何增进效能

补充:

当我重新安装好一齐LAMP东西后,又慢了,
算是发现主因,跟XDEBUG有一点关系....

VBOX SHARED FOLDER 可能有CACHE 问题,可以尝试关闭HOST I/O 去解决

@Superman >> 太抱歉,在你的主题说这么多无关的东西

artt's 的头像

Re: 如何增进效能

@Kay.L >> 不要这么说, 要产生有价值的东西之前,首先就要让大家畅所欲言, 而且很感谢你宝贵经验的分享

我从大家的分享中得到很多, 虽然还无法让这些东西,消化成为知识, 因为我和你们的程度实在有很多的差距

可是你们的经验, 可以给我学习的方向

分享带给大家的就是另一个创造的开始

artt's 的头像

Re: 如何增进效能

web master >> 系统的时间是不是有问题, 我在10:26 post 的讯息, 怎么到了server后,变成了13:24

dennys's 的头像

Re: 如何增进效能

时区改好了, 怪怪, 升级的时候怎么可能会去动到时区呢?

artt's 的头像

Re: 如何增进效能

@superman,

回到你的问题,
你要找出是MYSQL / PHP问题

如DEVEL LOG:

Executed 52 queries in 5.63 ms. Queries exceeding 5 ms are highlighted. Page execution time was 179.5 ms. Memory used at: devel_boot()=0.59 MB, devel_shutdown()=3.29 MB, PHP peak=3.75 MB.

这段与DB相关
Executed 52 queries in 5.63 ms

这段与PHP有关
Page execution time was 179.5 ms 
如果是PHP这边,要用到XDEBUG / XHProf

普通分类: