FastCGI: 可伸缩架构的CGI开放扩展和PHP

jackxiang 2010-2-11 13:21 | |
CGI(Common Gateway Interface): 通用网关接口

一般是可执行程序,例如EXE文件,和WEB服务器各自占据着不同的进程,而且一般一个CGI程序只能处理一个用户请求。这样,当用户请求数量非常多时,会大量占用系统的资源,如内存、CPU时间等,造成效能低下。



其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能. 传统的CGI解释器的反复加载是CGI性能低下的主要原因, 如果CGI解释器保持在内存中并接受FastCGI进程管理器调度, 则可以提供良好的性能、伸缩性等. 作为一种替代CGI的技术标准, fastCGI有如下优点(稳定,安全,高性能,方便扩展)


从稳定性上看,FastCGI是以独立的进程池运行来cgi,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑.
从安全性上看, FastCGI和宿主的server完全独立, fastcgi怎么down也不会把server搞垮,
从性能上看, FastCGI把动态逻辑的处理从server中分离出来, 大负荷的IO处理还是留给宿主server, 这样宿主server可以一心一意作IO,对于一个普通的动态网页来说, 逻辑处理可能只有一小部分, 大量的图片等静态IO处理完全不需要逻辑程序的参与
从扩展性上讲, FastCGI是一个中立的技术标准, 完全可以支持任何语言写的处理程序(php,java,python…)

php5-cgi:

PHP5的CGI方式的一大优势是内置了FastCGI的支持,只需指明绑定的地址和端口参数便可以以FastCGI的方式运行.但是如果直接使用php-cgi的FastCGI运行方式有两个问题

如果进程崩溃,难以配置重新启动
单进程的效率低
因此,我们可以借助Lighttpd的spawn-fcgi,目前版本号为1.6.0 rc1 该版本已经从lighttpd中独立发布出来.我们使用spawn-fcgi来控制php5-cgi进程的运行.

php-fpm(PHP FastCGI Process Manager):

和spawn-fcgi是一样的东西,好像将会在php5.3.2+中得到支持, http://php-fpm.org/download/

php-fpm文档中文翻译, http://syre.blogbus.com/logs/20092011.html

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/2709/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
2010-2-11 17:32 | 风里的玫瑰
shock
分页: 1/1 第一页 1 最后页
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]