在大规模的Apache2服务器上使用CGI有什么好处,还是应该使用FASTCGI?

我有一个用PHP完成的Web产品,理论上应该支持很多用户。 问题是,我刚刚离开了Apache,发现它只是作为CGI运行。 这是非常错误的,我应该做的fastcgi或只是把它保持原样?

使用CGI优先于fastCGI或apache模块的唯一有效理由是

  1. 为了节省资源的地方,这个盒子里只有很less量的dynamic页面
  2. 你需要使用不同的uid调用function(例如通过suexec)。
  3. 在那里你的处理引擎(即PHP插入器)非常非常脆弱,或者正在经历多重变化 – 然后只能用于系统testing

如果这些都不适用,那么你的网站将会慢得多,需要更多的资源来操作,因为操作系统需要为每个请求启动一个新的进程。

只是了解两种方法之间的区别:

cgi ,web服务器为每个请求启动一个新的进程(你想为浏览器创build响应的脚本)。 (如果没有人访问你的服务器,没有进程闲置)。

fastcgi你有一堆想要'脚本'的正在运行的实例。 (这种方法可以节省启动新进程的时间,但是你必须控制一大堆正在运行的实例,google for php-fpm)。

现在要select什么:如果真实访问者的数量符合你的“理论”期望值,并且你体验到糟糕的性能:考虑从“cgi”切换到“fastcgi”。 无论如何,你应该读入“fastcgi”来加深你的技能。 但是只要用户数量很小,速度是“好的”,就不需要采取任何措施。

什么是“大规模”? 对于某些用户来说,每个月一千万次综合浏览量,每小时大约一千万次网页浏览量。 这是给你什么

您在评论中提到的“1.5k访问量”当然不是很多,传统的CGI将会在没有任何问题的情况下使用这种stream量。 根据您的系统上运行的Web应用程序,传统的CGI可能会比当前的stream量繁忙一百倍。

但是,让我们忘记数字。

FastCGI比传统的CGI更快,因为已经有那些已经运行的工作进程在等待新的请求来处理。 在传统的CGI中,每个请求都会产生一个新的过程。 理论上,FastCGI可能已经帮助您在网站响应时间,完全取决于当前的瓶颈是您的Web应用程序(例如,实际的瓶颈是数据库调用)。