9

到目前为止的事实

根据“<a href="http://www.apachelounge.com/viewtopic.php?t=4385">mod_fcgi 不是 mod_fastcgi 的替代品”和“<a href="http://mail-archives. apache.org/mod_mbox/httpd-users/201008.mbox/%3C4C7C286B.6020703@codexterous.com%3E">mod_fcgid 和多线程 FastCGI 应用程序的问题”,mod_fcgid并非旨在期望 FastCGI 服务器能够处理一次多个请求,即没有设计为期望 FastCGI 服务器是多线程的。

前者说:

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

后者说:

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

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

连续的问题

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

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

问题

上述两个报价是否仍然正确(一个是 2011 年,另一个是 2010 年)?我在网上搜索了该主题,但找不到任何相关内容。如果它仍然是正确的,那么它是否总是正确的,或者是否有预期的计划mod_fcgid来了解多线程 FastCGI 服务器并接受这些可能旨在处理多个并发请求的服务器?

4

1 回答 1

3

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

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

于 2014-01-10T05:42:22.207 回答