《构建高性能web站点》动态脚本加速

作者:heyue 时间:2011-04-24 分类:互联网技术 评论:0条 浏览:3806

不可否认,动态脚本语言在互联网中占有举足轻重的地位,其最大的好处就是开发成本低、开发速度极快,这极大符合互联网的发展情况。3p系列(php、python、perl)和java(暂且把java的web开发也算到脚本语言中,其实差不多),成为目前web开发最强大的中间层(处于数据存储和前端界面的逻辑层)。

主要使用java的网站:淘宝(现在也部分使用php了),搜狐,人人

主要使用php的网站:facebook,sina,baidu,qq,kaixin001,各大团购网站

主要使用python的网站:google,douban

perl好像现在很少人用来写web中间逻辑层了,更偏向于系统去了。

有人说脚本语言执行效率太低,最好用c、c++来写网页。这个不是不可以,但是目前硬件如此便宜,开发时间如此之短,产品更改如此频繁,中国特色如此之多,如果用c、c++来做这中间的逻辑层,程序员的工资就会翻上好几倍,开发时间也会长上好几倍,c、c++的程序员都是完美主义者,他们不希望自己设计的软件被被人摆布,说怎么改就怎么改(主要是改起来太麻烦了,牵一发而动全身)),最后上线,发现用c、c++程序安装到线上的时候运维搞不定,悲剧,只能自己维护自己的代码。

总的来说,用脚本语言来处理web的中间逻辑层目前还没有遇到大的性能问题,不然facebook早变成myspace了。

总结1:php parsekit扩展 ,主要是用来看php的opcode
安装php的扩展

wget http://pecl.php.net/get/parsekit-1.3.0.tgz
tar xzvf parsekit-1.3.0.tgz
cd parsekit-1.3.0
/usr/local/php-fcgi/bin/phpize
./configure --with-php-config=/usr/local/php-fcgi/bin/php-config
make;make install
vim /usr/local/php-fcgi/etc/php.ini
//加入 extension=parsekit.so
php -m|grep parsekit

运行
php -r "var_dump(parsekit_compile_string('print 1+1;'));"
就可以打印出opcode的数组

php 的opcode和汇编类似的,是一种二元运算的赋值语法,比如

res1 = 1+1

res2 = res1*3

总结2:几种php的opcode(APC,eAccelerator,xcache)

其实都应该是差不多的,网上有一些比较的教程,可以参考一下

http://apps.hi.baidu.com/share/detail/15405216

我常用的是eAccelerator,这篇文章很全面,值得一看http://www.toplee.com/blog/100.html#pp1

eAccelerator 可以开启debug模式,

eaccelerator.debug=”1″

eaccelerator.log_file = “/var/log/httpd/eaccelerator_logg”

这样就可以看到那些文件被缓存了

总结3:xdebug 和wincachegrind 在windows 下看php程序运行效率

xdebug 是目前开发的时候最好的php代码调试工具和php效率检测工具,刻意和wincachegrind一起在windows下查看php程序的运行效率。
这里有比较详细的xdebug的教程 http://bbs.phpchina.com/thread-209365-1-1.html

1.下载地址:http://www.xdebug.org/download.php
版本选择: xdebug有Non-thread-safe(非线程安全)、thread-safe(线程安全)
写一个test.php,内容为,搜索"Thread Safety" enable为线程安全版、disable为非线程安全版
选择VC6还是VC9?

标明 MSVC9 (Visual C++ 2008) 的是VC9
如果你在apache1或者apache2下使用PHP,你应该选择VC6的版本
如果你在IIS下使用PHP应该选择VC9的版本
VC6的版本使用visual studio6编译
VC9使用Visual Studio 2008编译,并且改进了性能和稳定性。VC9版本的PHP需要你安装Microsoft 2008 C++ Runtime
不要在apache下使用VC9的版本

2.Xdebug安装:
将下载的php_xdebug-2.1.0-5.2-vc6.dll放到php的ext目录,重命名为php_xdebug.dll;

3.编辑php.ini,加入下面几行:
[Xdebug]
extension=php_xdebug.dll
xdebug.profiler_enable=on
xdebug.trace_output_dir="X:\Projects\xdebug"
xdebug.profiler_output_dir="X:\Projects\xdebug"
xdebug.profiler_output_name = "cachegrind.out.%p"
最后一行主要是为了和wincachegrind.out整合
后面的目录“I:\Projects\xdebug”为你想要放置Xdebug输出的数据文件的目录,可自由设置。
4. 重启Apache;
5. 写一个test.php,内容为,如果输出的内容中有看到xdebug,说明安装配置成功。

下载wincachegrid http://sourceforge.net/projects/wincachegrind/

打开在那个目录中生成的 cachegrind.out.* 就可以看到每一个过程调用执行了多长时间

wincachegrid

wincachegrid

总结3:xhprof  在linux 下看php程序运行效率

xhprof 是facebook开发出来的查看php效率的工具,非常牛逼,可以生成时间消耗图片

具体安装 http://hi.baidu.com/thinkinginlamp/blog/item/f4bd08fa1a03ba9e59ee90fd.html

快速体验可以到新浪的云计算平台 http://sae.sina.com.cn 体验

它生成的图片如下

yunphp xhprof

yunphp xhprof

相关推荐
更多

鹰的重生
Posted on 11月19日
《构建高性能web站点》–服务器并发处理能力(3)
Posted on 03月31日
php技术大会2011
Posted on 05月08日
我眼中的民办教师
Posted on 12月06日