mod_fcgid:多线程FastCGI现在还是计划中的未来?

时间:2013-03-25 19:47:22

标签: multithreading apache fastcgi mod-fcgid fcgid

到目前为止的事实

根据“mod_fcgi is NOT a replacement for mod_fastcgi”和“Issues with mod_fcgid and multi-threaded FastCGI application”,mod_fcgid,并非旨在期望FastCGI服务器能够同时处理多个请求,即不能设计为期望FastCGI服务器是多线程的。

前者说:

  

他们都支持已发布的“FastCGI”协议,但是   他们如何控制他们的FastCGI服务器有很大不同。   mod_fcgid快速消除FastCGI服务器并启动   新的。

后者说:

  似乎mod_fcgid并不知道我的服务器这个事实   是多线程的,能够处理多个请求。

这只是两个引用,其他地方也有一些。

连续问题

线程不仅仅是节省CPU和内存,还可以避免创建新进程的开销(创建一个线程比创建一个进程更轻),这可以通过硬件或操作系统性能来减轻;这也是一个逻辑问题,不容易缓解:线程属于同一个进程,不仅是性能,还有逻辑,例如。进程无法共享线程可以共享的内容,因为进程是隔离运行的(模IPC,但不一样)。

至少出于这个逻辑原因,可能会出现多线程FastCGI服务器的问题。 FastCGI服务器可以保存上下文(在进程之间共享可能很大且成本很高),当它被设计为多线程服务器时,它对于所有请求处理程序是全局的。为每个并发请求分配新进程不允许再确保公共上下文。

问题

上述两个引用是否仍然正确(一个是2011年,另一个是2010年)?我在网上搜索了这个主题,但找不到任何相关内容。如果它仍然是真的,那么,它是否永远是真的,或者是否存在mod_fcgid的预期计划,要了解多线程FastCGI服务器并接受这些服务器可以设计为处理多个并发请求?

1 个答案:

答案 0 :(得分:3)

我无法回答你关于mod_fcgid的确切问题,但Apache已经继续前进,现在Apache 2.4中的首选方法是使用mod_proxy_fcgi,http://httpd.apache.org/docs/trunk/mod/mod_proxy_fcgi.html

它确实处理多个并发请求。通常,您可以将请求传递给php-fpm处理程序。

相关问题