worker使用了多進程和多線程的混合模式。它也預先產生幾個子進程(數量比較少),然後每個子進程創建一些線程,同時包括一個監聽線程。每個請求過來,會被分配到1個線程來服務。
線程比起進程會更輕量,因為線程通常會共享父進程的內存空間,因此,內存的佔用會減少一些。在高並發的場景下,因為比起prefork有更多的可用線程,表現會更優秀一些。
apt-get update
apt-get upgrade
#for Debian 10 Buster
apt-get install -y php7.3-fpm
#for Debian 9 Stretch
apt-get install -y php7.0-fpm
#for Debian 8 Jessie
apt-get install -y php5.6-fpm
a2dismod php7.0 mpm_prefork
a2enmod mpm_worker actions
a2enconf php7.0-fpm
systemctl restart apache2
#for Debian 10 Buster
vi /etc/php/7.3/fpm/php.ini
#for Debian 9 Stretch
vi /etc/php/7.0/fpm/php.ini
#for Debian 8 Jessie
vi /etc/php/5.6/fpm/php.ini
ps aux|grep php-fpm
kill -USR2 程序編號
vi /etc/apache2/mods-available/mpm_worker.conf
<IfModule mpm_worker_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
systemctl restart apache2
vi /var/www/html/uploads/.htaccess
<Files "*.php">
SetHandler none
SetHandler default-handler
Options -ExecCGI
RemoveHandler .php
</Files>
a2dismod mpm_worker actions
a2enmod php7.0 mpm_prefork
systemctl restart apache2
ps aux|grep php-fpm|awk '{print $2}'|xargs kill -9