php不自动释放内存导致内存不足的情况
Song •
1669 次浏览 •
0个评论 •
2022年04月19日
最近一台并发高的服务器切换到新的服务器后,明明并发已经不高了,但是内存占用还是很高。
free -m
total used free shared buff/cache available
Mem: 7692 6712 570 105 410 616
Swap: 0 0 0
我使用ps -aux | sort -k4nr | head -n 10
查询占用最高的10个进程是PHP-FPM;通过重启PHP后内存降低
sudo service php7.4-fpm restart
接下来我们看下如何自动清除内存?
一种方法是减少php-fpm进程总数,来达到减少php-fpm内存占用的问题,例如调整pm.max_children等数值。实际使用过程中还发现进程数调低后,php-fpm进程还长期占用内存并没有及时释放。这时,解决的方法就是减少pm.max_requests数。
设置:
pm.max_requests = 1000
最大请求数max_requests,即当一个 PHP-CGI 进程处理的请求数累积到 max_requests 个后,自动重启该进程,这样达到了释放内存的目的了。以2GB内存的VPS主机设置为例,如果你设置的数值没有达到释放内存可以继续调低。
当php-fpm进程达到了pm.max_requests设定的数值后,PHP就会重启该进程,从而释放内存了。
对于大内存,对并发和可用性有要求的话,建议使用static管理模式+最大的pm.max_children。如果是小内存的服务器,建议使用dynamic或者ondemand模式,同时降低pm.start_servers和pm.max_spare_servers进程数。
更多相关好文
-
laravel中distinct()的使用方法与去重 2017-09-11
-
Laravel将view缓存为静态html,laravel页面静态缓存 2021-10-09
-
[ laravel爬虫实战--基础篇 ] guzzle描述与安装 2017-11-01
-
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 2017-07-18
-
mysql如何给运营人员添加只有查询权限的账号 2024-12-02
热门文章
-
Ubuntu 22.04系统编译安装Nginx1.22教程 2023-09-26
-
composer install时如何忽略php版本 2022-05-20
-
Laravel更新服务器出现Unknown named parameter $vid 2022-05-20
-
ubuntu 如何安装php后如何查看php-fpm.sock文件位置? 2022-05-17
-
阿里云服务器ESC流量带宽是按照什么计算的,入网流量还是出网流量 2022-04-19
ubuntu 如何安装php后如何查看php-fpm.sock文件位置?