配置 Apache + fcgi / php-fpm 的最佳方式是什么(在 debian buster 上)

What is best way of configuring Apache + fcgi / php-fpm (on debian buster)

一直想知道应该怎么做。

在以前版本的 apache 上(在 debian 9 中)我就是这样做的。

这样我可以限制 php 池的大小,如果池达到最大值,apache 将对请求进行排队,除非我们在队列中达到 acquire 延迟(此处为 10 秒),否则不会出现错误会吐出来

<IfModule proxy_fcgi_module>
# on previous versions of apache, having enablereuse on socks would hang
# when php reached it's max number of requests (set in fpm pool)
    <Proxy "unix:/run/php/pool.php7.3-fpm.sock|fcgi://pool-php-7-3" enablereuse=Off max=5 >
        ProxySet connectiontimeout=3 timeout=30 acquire=10
    </Proxy>
</IfModule>

<VirtualHost *>
    ServerName example.com

    DocumentRoot /path/to/docroot

    <Directory /path/to/docroot>
        Options +Indexes
        AllowOverride all
        Require all granted
    </Directory>


    <IfModule proxy_fcgi_module>
        <FilesMatch ".+\.ph(ar|p|tml)$">
            SetHandler "proxy:fcgi://pool-php-7-3"
        </FilesMatch>
    </IfModule>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

#     CustomLog /dev/null
#     ErrorLog /dev/null

</VirtualHost>

现在,在较新版本的 apache 上,我们似乎想要 enablereuse=On 或者性能非常差。

我正试图让它在 VPS 上很好地工作。

感谢有关如何在最新版本的 apache2.4 中定义它的建议 当 php 池达到最大值时让用户多等几秒钟比向他们抛出错误更好。 我以前用这个很好地工作:)

也许我不是在说这是 apache 的写入方式?

我终于发现我问错了自己的问题! (经常找不到答案)

回到过去,apache 能够处理这个问题,但似乎在最近的版本中它做得不好,因为有更好的方法!!

由于php-fpm 可以处理积压队列,因此无需在apache 级别对其进行控制。 FPM 池管理器可以处理 'first in first out' (aka fifo) 队列,因此不会拒绝连接

查看 /etc/php/7.3/fpm/pool.d/www.conf 中的“开箱即用”,您会找到这些行,只需取消注释行

; Set listen(2) backlog.
; Default Value: 511 (-1 on FreeBSD and OpenBSD)
;listen.backlog = 511

因此,只需告诉 apache fcgi 代理允许多达 511 个...在我的情况下,50 个就足够了,但 511 是默认值并且似乎对我来说效果很好(网站是 WordProuut ~5 pages/s)

<IfModule proxy_fcgi_module>
    <Proxy "unix:/run/php/pool.php7.3-fpm.sock|fcgi://pool-php-7-3" enablereuse=Off max=511 >
        ProxySet connectiontimeout=3 timeout=30 acquire=10
    </Proxy>
</IfModule>

我确实尝试过 enablereuse=On,但在我看来,当 php-进程达到 pm.max_requests 时,它仍然抛出了一个错误。与 enablereuse=Off

配合得很好