關於php-fpm多版本共存,回收內存等問題


目前多版本共存的方法有好幾種,

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做服務端

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM