电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 在线教程-> CGI
实战 FastCGI(转)四-CGI教程,CGI文档
作者:网友供稿 点击:40
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
4. fastcgi 有多快?

看完安装 fastcgi 的阿帕契模块,以及无聊的程序设计注意事项后,我们来看看一些可以让人振奋精神的数据,效能比较 (bench mark) 总是计算机玩家的最爱 :-)

4.1 评比工具 - apachebench
在阿帕契服务器的套件中,有一个叫做 ab (apachebench) 的工具。apachebench 主要是用来测试阿帕契服务器执行效率用的,我们就以 apachebench 做为 cgi vs. fastcgi 的评比工具。

apachebench 可以针对某个特定的 url 仿真出连续的联机请求,同时还可以仿真出同时间点数个相同的联机请求,因此利用 apachebench 可帮助我们在网站开发期间仿真实际上线可能的情况,利用仿真出来的数据做为调整服务器设定或程序的依据。 apachebench 的用法如下:

usage: /usr/local/apache/bin/ab [options] [http://]hostname[:port]/path
options are:
-n requests number of requests to perform
-c concurrency number of multiple requests to make
-t timelimit seconds to max. wait for responses
-p postfile file containg data to post
-t content-type content-type header for posting
-v verbosity how much troubleshooting info to print
-w print out results in html tables
-x attributes string to insert as table attributes
-y attributes string to insert as tr attributes
-z attributes string to insert as td or th attributes
-v print version number and exit
-k use http keepalive feature
-h display usage information (this message)

假设我们要对 echo.fcg 做测试,仿真 1000 次的联机请求,而且同一时间有 20 个并行的 (concurrent) 联机请求的情况,只要在命令列模式下执行

$ ab -n 1000 -c 20 http://localhost/fcgi-bin/echo.fcg
稍等一会,apachebench 会把结果秀出来,

this is apachebench, version 1.3
copyright (c) 1996 adam twiss, zeus technology ltd, http://www.zeustech.net/
copyright (c) 1998-1999 the apache group, http://www.apache.org/

benchmarking localhost (be patient)... server software: apache/1.3.6
server hostname: localhost
server port: 80
document path: /fcgi-bin/echo.fcg
document length: 995 bytes
concurrency level: 20
time taken for tests: 6.859 seconds
complete requests: 1000
failed requests: 0
total transferred: 1142000 bytes
html transferred: 995000 bytes
requests per second: 145.79
transfer rate: 166.50 kb/s received

connnection times (ms)
min avg max

connect: 0 4 61
processing: 62 128 771
total: 62 132 832

以上结果指出,在同时间 20 个联机请求 (concurrency level) 的情况下,完成 1000 次的联机请求,共花了 6.859 秒 (time taken for tests),因此这个程序每秒平均可以处理 (requests per second) 145.79 个联机请求。
在接下来的评比测试中,我们就以每秒可以处理的联机请求数目来做为效能评比的依据。

4.2 cgi vs. fastcgi
前面提过利用 fcgi_stdio.h 函式库编译出来的 fastcgi 程序也兼容于 cgi 模式,因此我们只要把 fcgi-devkit-2.1 套件附的范例程序 echo.fcg 复制到 /cgi-bin 目录下,并且把文件名改成 echo.cgi,这支范例程序就可分别以 cgi 模式和 fastcgi 模式来执行,并且做比较。

首先分别对 cgi模式执行的 http://localhost/cgi-bin/echo.cgi 以及 fastcgi 模式的 http://localhost/fcgi-bin/echo.fcg 连续送出 10, 100, 1000, 10000 次的联机请求,得到的平均每秒可处理的请求 (requests per second) 结果为:

联机数目 10 100 1000 10000
cgi 52.63 53.08 52.24 51.49
fastcgi (static mode) 204.08 224.22 146.78 207.14

接下来再分别以 concurrency level 为 10, 50, 100 的情况下做测试,得到 requests per second 结果为:

concurrency 联机数目 10 100 1000 10000
10 cgi 38.31 46.55 53.61 55.09
10 fastcgi 185.19 208.33 162.63 177.14
50 cgi 27.25 33.16 50.72 53.99
50 fastcgi 92.59 176.37 196.58 196.88
100 cgi 17.92 24.84 48.14 52.84
100 fastcgi 86.21 187.27 195.54 193.17

由上述数据看来,对同一支程序 (echo.c) 而言,使用 fastcgi 模式来执行,速度提升了 3-4 倍。可见得 fastcgi 对网站程序的效能提升上具有相当大的助益,尤其当使用量很大时,其效益更加明显。

以上的测试条件并不是十分严谨,主要在让你了解使用 fastcgi 之后对于效能及速度上一个概括的比较,也提供一个可供网站开发者可以评量的依据。

实际上,对一个初始化动作复杂,例如要先和数据库建立联机,或是配置内存,做变量初始化的程序来说,使用 fastcgi 可以比原先 cgi 在效能上增加更多,速度更快。而对一个有数据库可联机数目限制的系统来说,使用 fastcgi 就好象一个 application server 一样,不用担心 cgi 一次 fork 太多,超过联机数目上限 (fastcgi 可以设定一次跑几支)。

4.3 找出 memory leak
善用 apachebench 这个工具,还可以帮助网站程序发展人员找出在 fastcgi 程序中隐藏的 memory leak 臭虫。

每一支 fastcgi 程序在处理完一个联机请求后的状况都应该相同,我们利用 apachebench 对欲测试的程序送出上百次或上千次的联机请求以仿真实际上线的状况,如果发现程序占用的内存愈来愈多而且不会减少的话,表示程序有 memory leak 的问题。

虽然对 fastcgi 程序而言,当它一直不断吃掉系统资源到资料耗尽后会自动退出 (core dump 或是 exit) ,释放所占用的资源然后再重新激活,但这将会影响系统其它功能的正常运作,所以撰写 fastcgi 程序一定特别小心。
文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·LB5000XP论坛配合SERV-U获取系统管理员权限-CGI教程,CGI文档
·CGI 版本-PHP教程,其它文章
·获取随机的由大小写字母和数字组成的八位密码-CGI教程,CGI文档
·Perl在NT下的快速简便安装方法 (转)-CGI教程,CGI文档
·实战 FastCGI(转)二-CGI教程,CGI文档
·XML和现代CGI应用程序-.NET教程,XML应用
·perl在win32平台上直接操作打印机-CGI教程,CGI文档
·实战 FastCGI(转)五(完)-CGI教程,CGI文档
·Python 快速入门(一)-CGI教程,CGI文档
·网站 PAGEVIEW 分析系统 CGI (原创)-CGI教程,CGI文档

最新文章
·顺便说说一些指示代码
·跟我学Perl(二)
·跟我学Perl(一)
·CGI教程(5)利用CGI解码FORM
·CGI教程(4)HTML 表单
·CGI教程(3)怎样发回文档给客户端
·CGI教程(2)怎样从服务器获得信息
·CGI教程(1)简介
·CGI教程(目录)
·Perl直接入门详尽指南




版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号