此问题可能是由于PHP脚本在执行时导致Apache过载而引起的。可以通过使用PHP-FPM(FastCGI Process Manager)来解决此问题。PHP-FPM是一种用于管理PHP进程的进程管理器。 它可以独立于Apache运行,并且可以为每个站点/虚拟主机设置不同的进程池。以下是如何将PHP-FPM与Apache集成的示例代码:
将以下代码添加到Apache的httpd.conf文件中:
SetHandler "proxy:fcgi://127.0.0.1:9000"
接下来,请确保PHP-FPM已安装并在运行。以下是如何在Ubuntu上安装并启动PHP-FPM:
sudo apt-get install php-fpm
sudo service php7.0-fpm start
一旦完成,则可以在Apache服务器状态中检查PHP-FPM进程和占用的资源。
还可以通过调整PHP-FPM池中的进程数来优化性能。 以下是如何配置它的示例代码:
[www]
user = www-data
group = www-data
listen = /run/php/php7.0-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = static
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
在此示例中,我们设置了最大子进程数为50个,而服务器的最小可用空闲子进程数为5个,最大可用空闲子进程数为15个。 这将确保进程池中始终有足够的子进程来处理传入的请求。