FastCGI是一种开放源码、高性能的Web服务器与 Web 应用程序间通讯的协议。FastCGI协议的目的是为了优化CGI模式下的性能问题。
传统上,在Web服务器和应用程序之间的通讯时通过CGI(Common Gateway Interface) 协议实现的。Web服务器把HTTP请求发给CGI应用程序, CGI应用程序接收到这个请求,处理并返回结果给Web服务器, 然后Web服务器把结果发送给浏览器。但是,随着Web应用程序与数据库、 缓存服务等其它组件的集成,CGI架构本身的性能瓶颈成为了很大的问题。每当一个请求到达应用程序,都需要启动一个新的进程或线程来处理它。 这样,因为频繁地启动进程或线程而引起的系统开销和切换开销是很大的。FastCGI就是为了解决这些性能问题而设计的。
FastCGI模块是一个独立的进程,运行在Web服务器的进程空间中。与每个请求相对应的FastCGI进程在应用程序处理请求时已经运行好了,这样就省去了每个请求都必须启动应用程序新进程的系统资源浪费。FastCGI进程常驻内存中,处理多个请求,从而达到高效利用资源的目的。FastCGI进程可以作为一个后台进程来运行,当web服务器收到请求并转交给FastCGI进程时,FastCGI进程并不退出,而是继续执行,直到所有的请求被处理完毕后才退出。
FastCGI 还有一个很好的特点:在所有的FastCGI 进程中,有一个进程是主进程该进程负责和web服务器之间的通讯,当web服务器需要传递请求给FastCGI 进程时,主进程会将这个请求分配给空闲进程,从而达到了多进程间的均衡。主进程会在收到FastCGI进程的反馈结果后回传给web服务器,进程的控制则交给主进程处理。
FastCGI的优点:
1.减少进程的启动和关闭次数,提高运行效率,降低系统开销。由于FastCGI进程常驻内存,所以每次请求到来就不需要再启动新的进程。
2.当出现访问高峰,FastCGI进程会自动增加到可以接受的最大值。这时,FastCGI可以自动控制进程数,从而达到工作负载均衡,使整个Web应用程序能够快速高效的运行。
3.可以在FastCGI进程中运行多个Web应用程序,这样就不需要为每个应用单独开启进程,从而节约内存资源。
FastCGI的缺点:
1.不支持通讯过程的加密。
2.不能在FastCGI中调用PHP的阻塞式函数,因为FastCGI进程中不能挂起。
在实际应用中,FastCGI被广泛应用。最初设计FastCGI的主要目的是用来提升PHP的性能。FastCGI进程还可以独立于Web服务器进行配置。因为它是一个独立的 **HTTP(应用)服务器** , 所以它甚至可以在不同的主机上运行,以最佳的方式服务于Web服务器和大量Web站点。
案例:
FastCGI已经运用于许多互联网公司的开发中,如Nginx、 Apache、 Lighttpd、 IIS等Web服务器都支持FastCGI。其中Nginx的使用最为广泛。
Nginx是一种高性能、高并发、安全稳定的HTTP和反向代理Web服务器,也是FastCGI的支持者和使用者。Nginx使用FastCGI实现了PHP的高效处理,此外在动态请求处理方面,Nginx也支持 Perl、Ruby 等语言的模块,支持WSGI、SCGI、uWSGI 等的模块,方便了Python语言的使用。因为FastCGI的高效性,许多在Nginx上运行的PHP站点,每秒可以处理数以千计的访问请求。
在企业级应用中,FastCGI被广泛的应用于Web应用程序和数据库集成。例如,在中央财经大厦实施的“互金后台系统”,为了能够支持较高的并发访问和更快的访问速度,项目组选择了Nginx+FastCGI的技术架构。在实际运行中,该系统能够同时处理数千个访问请求,并支持数据的实时更新。
综上所述,FastCGI可以通过减少进程启动次数,有效的提高运行效率和降低系统开销,所以在实际应用中得到了广泛的应用。 如果你喜欢我们三七知识分享网站的文章, 欢迎您分享或收藏知识分享网站文章 欢迎您到我们的网站逛逛喔!https://www.37seo.cn/
发表评论 取消回复