這個是Apache中最新的模式,在現在版本裡的已經是穩定可用的模式。它和worker模式很像,最大的區別在於,它解決了keep-alive場景下,長期被佔用的線程的資源浪費問題(某些線程因為被keep-alive,空掛在哪裡等待,中間幾乎沒有請求過來,甚至等到超時)。
event MPM中,會有一個專門的線程來管理這些keep-alive類型的線程,當有真實請求過來的時候,將請求傳遞給服務線程,執行完畢後,又允許它釋放。這樣增強了高並發場景下的請求處理能力。
event MPM在遇到某些不兼容的模塊時,會失效,將會回退到worker模式,一個工作線程處理一個請求。官方自帶的模塊,全部是支持event MPM的。
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_event proxy_fcgi setenvif
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
systemctl restart apache2
ps aux|grep php-fpm
kill -USR2 程序編號
vi /etc/apache2/mods-available/mpm_event.conf
<IfModule mpm_event_module>
StartServers 3
MinSpareThreads 75
MaxSpareThreads 250
ThreadsPerChild 25
MaxRequestWorkers 400
MaxConnectionsPerChild 0
</IfModule>
vi /var/www/html/uploads/.htaccess
systemctl restart apache2
<Files "*.php">
SetHandler none
SetHandler default-handler
Options -ExecCGI
RemoveHandler .php
</Files>
a2dismod mpm_event proxy_fcgi setenvif
a2enmod php7.0 mpm_prefork
systemctl restart apache2
ps aux|grep php-fpm|awk '{print $2}'|xargs kill -9