fastcgi 和 fpm 有什么区别?

2022-08-30 07:01:27

我正在尝试在macports上安装带有fpm的php。我在某处读到fpm意味着FastCGI进程管理器。这是否意味着 fastcgi 和 fpm 是相同的?如果它们是相同的,那么为什么我们有两个不同的php的macports变体,即“php5 + fastcgi”“php5 + fpm”


答案 1

FPM是一个进程管理器,用于管理PHP中的FastCGI SAPI(Server API)。

基本上,它取代了对SpawnFCGI之类的东西的需求。它自适应地生成FastCGI子级(这意味着如果当前负载需要它,则启动更多子代)。

否则,它与 FastCGI 之间没有太多的操作差异(从请求开始到结束的请求管道是相同的)。它只是为了让实现它更容易。


答案 2

Anthony所说的是绝对正确的,但我想补充一点,您的经验可能会显示出更好的性能和效率(不是由于-vs-,而是更多地归功于您的实现)。fpmfcgihttpd

例如,我有一台四核机器运行+嗡嗡作响。为了应对增长,我升级到了一台16核机器,有两件事爆炸式增长:RAM使用率和隔离。我发现自己每30分钟重新启动一次,以保持网站正常运行。lighttpdfcgilighttpd

我切换到php-fpm和nginx,RAM使用率从>20GB下降到2GB。Segfaults也消失了。在做了一些研究之后,我了解到lighttpd和fcgi在负载下的多核机器上相处得不好,并且在某些情况下还存在内存泄漏问题。

这是由于比更好吗?不完全是,但是你如何挂钩似乎是一个完整的恶作剧,比你如何通过服务更有效。php-fpmfcgiphp-fpmfcgi


推荐