目前多版本共存的方法有好几种,
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做服务端