Web模型初探

CGI

全称为Common Gateway Interface,即公共网关接口。当Web服务器收到一个请求时,运行相应的处理程序,相关参数通过标准输入传递给处理程序,处理程序的标准输出做为响应内容,处理程序运行结束后将响应发送给客户端。

  • 性能 *

    进程级,每请求一进程。进程创建有很大的开销,并发数与系统资源消耗呈线性增长,有限的系统资源成为瓶颈。

FastCGI

为CGI的改良,CGI程序做为独立的网络后台程序运行,当Web服务器收到一个请求时,发起一个tcp请求到处理程序,通过该tcp连接传入相关参数,处理程序的响应也通过该tcp连接发回给Web服务器,处理程序关闭该连接表示处理完毕,Web服务器最终将响应发送给客户端。

  • 性能 **

    网络级,每请求一连接。CGI的改良,重用进程,进程处理完一个请求后再处理下一请求,对于多个请求,只需要付出一次进程创建的开销,可以在后继请求重用资源(从文件载入的配置项、查询到的数据、打开的文件、数据库连接等)。因为处理程序是串行处理请求,往往需要同时运行多个处理程序以提升并发处理能力,这些处理程序无法共享资源以进一步提升性能。

  • 附录

    Web服务器可重用到服务程序的连接进一步提升性能(如:nginx的upstream_keepalive)。

WSGI

uWSGI


web