首页
Portal
业界资讯
社区
BBS
我的家园
Space
个人空间
导读
Guide
登录
/
注册
用户名
Email
自动登录
找回密码
密码
登录
注册
搜索
搜索
本版
帖子
用户
本版
帖子
用户
帖子
好友
道具
勋章
收藏
任务
淘帖
门户
导读
设置
我的收藏
退出
腾讯QQ
微信登录
首页
›
≡≡网络技术≡≡
›
服务器
›
IIS6.0环境用FastCGI模式加载php的性能测试
返回列表
IIS6.0环境用FastCGI模式加载php的性能测试
[ 复制链接 ]
灰儿
2009-4-20 09:20:34
很多人都在Windows平台用IIS来跑PHP环境。如果在网络上检索一下的话,就会发现,目前IIS+PHP环境有3种方法。
1、CGI方式加载PHP环境
,通常就是IIS里面配置解释器为php.exe,早期比较常见,目前使用较少。
特点是:稳定,但效率太低。
2、ISAPI方式加载PHP环境
,通常就是IIS里面配置解释器为php5isapi.dll,目前使用最多,应用最广。
特点是:多线程,效率较高,但不够稳定。
3、FastCGI方式加载PHP环境
,在IIS环境里并不常见,但其它系统环境应用还是有的,不过IIS7.0开始内置FastCGI了。
特点是:高效率,高稳定性,属于将来发展趋势。
今天我给大家介绍的是第三种,也就是最不常见的
IIS6.0以FastCGI模式加载php环境
。
B N Xb.com
据说相同配置下FastCGI方式加载PHP比ISAPI方式加载PHP性能提高很多,
起源网收录
今天我的重点就放在
IIS6.0以FastCGI模式加载php环境的测试,看看究竟性能是不是提升了。
当然我的理由也很充分,我没有足够好的服务器,所以我要榨干服务器的资源,如果确实FastCGI的性能更好,那我就赚了:)
什么是FastCGI
FastCGI是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。
众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI解释器保持在内存中并接受FastCGI进程管理器调度,
则可以提供良好的性能、伸缩性、Fail-Over特性等等。
FastCGI的工作原理是
1、Web Server 启动时载入FastCGI进程管理器(IIS ISAPI或Apache Module)。
2、FastCGI进程管理器自身初始化,启动多个CGI解释器进程(在任务管理器中可见多个php-cgi.exe)并等待来自Web Server的连接。
3、当客户端请求到达Web Server时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server将CGI环境变量和标准输入发送到FastCGI子进程php-cgi.exe。
4、FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回Web Server。当FastCGI子进程关闭连接时,请求便告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器(运行在WebServer中)的下一个连接。在正常的CGI模式中,php-cgi.exe在此便退出了。
在上述情况中,你可以想象CGI通常有多慢。每一个Web请求PHP都必须重新解析php.ini、重新载入全部dll扩展并重初始化全部数据结构。使用FastCGI,所有这些都只在进程启动时发生一次。一个额外的好处是,持续数据库连接(Persistent database connection)可以工作。
因为进程在创建的时候CPU时间片、内存调度、IO访问消耗最多,所以FastCGI类似于常用的池技术。即预先创建好进程,等待请求。执行完成后,进程并不结束,而是返回池中。不过,按道理,这些进程执行到一定次数后,也会全部销毁再重新建立一次。
一、IIS6.0以isapi方式加载php环境并测试
我准备了一个phpinfo的页面,保存成abu.php
<php?
phpinfo();
?>
根据phpinfo的页面显示的Server API的值可知当前加载的php环境。
Server API:ISAPI表明目前服务器是IIS+ISAPI方式加载的PHP环境。
Server API:CGI/FastCGI表明目前服务器是CGI/FastCGI加载的PHP环境。
下面进行最简单的压力测试:
我用apache里面内置的ab.exe进行最简单的压力测试:
ab -n 1000 -c 20
http://192.168.0.6/abu.php
这句话的意思是模拟出总共1000个网站请求,并发20个请求,访问服务器
http://192.168.0.6/abu.php
页面
根据服务器上的截图(图略),注意,我们可以发现,服务器的CPU已经窜至80%左右。
好的,下面开始第二个阶段,换FastCGI
二、IIS6.0以FastCGI方式加载php环境并测试
IIS下可用的FastCGI扩展有很多种,我在这里给大家演示的是微软官方发布的扩展。
【下载】
http://www.microsoft.com/downloads/details.aspx?FamilyID=2d481579-9a7c-4632-b6e6-dee9097f9dc5&displaylang=en
安装之后,默认是安装到%WINDIR%\system32\inetsrv路径下,当然直接拆出来用也可以。
没有图形界面,可以直接写配置文件或者通过官方配的fcgiconfig.js文件进行配置。
还是用上面的方法进行简单的压力测试
根据服务器上的截图(图略),我们可以发现,基本上CPU的消耗在30-40%左右。
三、ISAPI和FastCGI两种模式对比测试的结果
根据上面的简单测试,我们可以发现,相同硬件环境下,FastCGI方式加载PHP环境比ISAPI方式加载PHP性能提高约1倍。
把服务器换成FastCGI方式加载PHP了,性能有了明显的提高。又可以继续压榨可怜的服务器,心里十分开心。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
回复
本版积分规则
回帖后跳转到最后一页
灰儿
管理员
9833篇
主题总数
7
总热度
提问
+关注
产品动态
2024-05-04
Switch EdiZon SE 金手指插件使用 图文教程
2024-04-29
网御星云入侵防护系统_V6000流量控制配置实例
2024-04-23
电子书在线阅读和下载网址推荐
2024-04-23
泛微(weaver)e-cology_V10公文管理,公文环节(过程定义)设置
2024-04-23
泛微(weaver)e-cology_V10公文管理,收文单位隐藏下级单位
2024-04-20
《再次成为神》免费下载观看
2024-04-20
《為甚麼會有人類》
2024-04-16
Linux下查询文件夹中文件数量的方法
热点推荐
1
Switch EdiZon SE 金手指插件使用 图文教程
2
网御星云入侵防护系统_V6000流量控制配置实例
3
电子书在线阅读和下载网址推荐
4
泛微(weaver)e-cology_V10公文管理,公文环节(过程定义)设置
5
泛微(weaver)e-cology_V10公文管理,收文单位隐藏下级单位
6
《再次成为神》免费下载观看
7
《為甚麼會有人類》
8
Linux下查询文件夹中文件数量的方法
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
产品动态
2024-05-04
Switch EdiZon SE 金手指插件使用 图文教程
2024-04-29
网御星云入侵防护系统_V6000流量控制配置实例
2024-04-23
电子书在线阅读和下载网址推荐
2024-04-23
泛微(weaver)e-cology_V10公文管理,公文环节(过程定义)设置
2024-04-23
泛微(weaver)e-cology_V10公文管理,收文单位隐藏下级单位
2024-04-20
《再次成为神》免费下载观看
2024-04-20
《為甚麼會有人類》
2024-04-16
Linux下查询文件夹中文件数量的方法
热点推荐
1
Switch EdiZon SE 金手指插件使用 图文教程
2
网御星云入侵防护系统_V6000流量控制配置实例
3
电子书在线阅读和下载网址推荐
4
泛微(weaver)e-cology_V10公文管理,公文环节(过程定义)设置
5
泛微(weaver)e-cology_V10公文管理,收文单位隐藏下级单位
6
《再次成为神》免费下载观看
7
《為甚麼會有人類》
8
Linux下查询文件夹中文件数量的方法
热门板块
PC操作系统
启动和引导
手机操作系统
硬件相关
办公软件
多媒体技术
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言
了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。