配置Apache+;fcgi/php fpm(在debian buster上)
我一直在想应该怎么做 在apache的早期版本(Debian9)中,我就是这样做的 通过这种方式,我可以限制php池的大小,如果池达到最大值,apache将对请求进行排队,除非我们在队列中达到配置Apache+;fcgi/php fpm(在debian buster上),php,apache,fpm,mod-fcgid,Php,Apache,Fpm,Mod Fcgid,我一直在想应该怎么做 在apache的早期版本(Debian9)中,我就是这样做的 通过这种方式,我可以限制php池的大小,如果池达到最大值,apache将对请求进行排队,除非我们在队列中达到acquiredelay(这里是10秒),否则不会出现错误 <IfModule proxy_fcgi_module> # on previous versions of apache, having enablereuse on socks would hang # when php reach
acquire
delay(这里是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的早期版本中,在socks上启用可重用性将是挂起的
#当php达到最大请求数时(在fpm池中设置)
ProxySet connectiontimeout=3超时=30获取=10
ServerName example.com
DocumentRoot/path/to/docroot
选项+索引
允许超越所有
要求所有授权
SetHandler“代理:fcgi://pool-php-7-3"
ErrorLog${APACHE_LOG_DIR}/error.LOG
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
#CustomLog/dev/null
#ErrorLog/dev/null
现在,在apache的最新版本中,我们似乎希望启用enablereuse=on
或者性能非常差
我正试图让它在VPS上正常工作
感谢您就如何在apache2.4的最新版本中定义这一点提供建议
当php池达到最大值时,让用户多等几秒钟比向用户抛出错误要好。
我以前经常让它工作得很好:)
也许我没有用apache的编写方式来表达这个问题?我终于发现我问错了自己的问题! (通常在找不到答案时) 所以在过去,apache能够处理这个问题,但在最近的版本中,它似乎做得不好,因为有更好的方法 由于php fpm可以处理积压工作队列,因此无需在apache级别对其进行控制。FPM池管理器可以处理“先进先出”(又名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
所以只要告诉ApacheFCGiProxy允许多达511个。。。在我的例子中,50就足够了,但511是默认值,对我来说似乎很好(网站是一个WordProuut~5页/秒)
ProxySet connectiontimeout=3超时=30获取=10
我确实尝试过
enablereuse=On
,但在我看来,当php进程到达它的pm.max\u请求时,它仍然抛出了一个错误。与enablereuse=Off
配合得很好,我终于发现自己问错了问题!
(通常在找不到答案时)
所以在过去,apache能够处理这个问题,但在最近的版本中,它似乎做得不好,因为有更好的方法
由于php fpm可以处理积压工作队列,因此无需在apache级别对其进行控制。FPM池管理器可以处理“先进先出”(又名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
所以只要告诉ApacheFCGiProxy允许多达511个。。。在我的例子中,50就足够了,但511是默认值,对我来说似乎很好(网站是一个WordProuut~5页/秒)
ProxySet connectiontimeout=3超时=30获取=10
我确实尝试过enablereuse=On
,但在我看来,当php进程到达它的pm.max\u请求时,它仍然抛出了一个错误。与enablereuse=Off