目前多版本共存的方法有好幾種,
1,使用端口監聽
listen = 127.0.0.1:9080
2,使用sock監聽
listen = /usr/local/php8/php-cgi.sock
但是目前個人建議的方式如下 nginx 通信php-fpm的時候使用unix-socket通信,因為套接字效率更高
查看是否啟動成功 ps -es|grep php
nginx轉發請求
location ~ \.php(.*)$ { fastcgi_pass unix:/usr/local/php8/php-cgi.sock;
#fastcgi_pass 127.0.0.1:9080;
fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; }
location ~ \.php(.*)$ { fastcgi_pass unix:/usr/local/php72/php-cgi.sock;
#fastcgi_pass 127.0.0.1:9072
fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; }
這就多版本共存的模式
還有我們常說的php-fpm不會吧內存歸還給系統內存是因為什么呢?
第一是可以更高效執行,但是會吃掉很多系統內存
max_request默認是0,即不釋放,就是我們一般所說的不歸還系統內存
如果你需要一定程度觸發內存釋放給內存
你可以設置max_request =300,
注意如果這個值設置過大,就不會經常觸發fpm的進程內存釋放
如果設置過小,就會經常釋放內存,一定程度上影響PHP性能
怎么設置一個合理的大小呢?這個你需要注意的點比較多,
首先你平常需要關注一下項目的最大峰值,平常內存水平
以下均為估值
比如你的內存是8G,平常訪問是qps是500,php-fpm內存消耗是2G,峰值是6G,qps是3000左右
但是6Gfpm的消耗,加上系統其他服務的消耗,基本沒剩多少了,為了減少峰值情況下,內存耗盡的問題,導致fpm問題,
那么你的max_request可以設置成600 OR 800,不影響平常運行,開始出現峰值開始釋放內存
如果你真的需要高並發低內存場景,你可以試試swoole做服務端