【问题小记】解决Linux下php-fpm进程过多耗尽内存问题

news2024/11/26 10:29:34

最近一段时间,发现经常性的服务器内存耗尽,导致mysql服务down掉,一开始以为是mysql跑的太久占用较多内存,后来认真排查了一下原来是是PHP-FPM进程过多导致的。

今天一看内存又达到了82%,预计不会太久服务又会挂掉,于是进行了排查解决,先查看目前空闲内存,已经不多了

[root@asdfasfa~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3790        2756         123          61         911         648
Swap:          1024        1021           3

先后top命令+M对占用内存较多的进程进行排序,发现大量的php-fpm进程,每一个虽然只占用1.5%的内存,但是架不住数量多,所以需要修改php-fpm的配置文件设置进程数来解决问题。

然后我就找到了php-fpm的配置文件php-fpm.conf(如果不清楚具体路径可以find命令搜索),发现原配置文件设置的数目是80,服务器内存不够妥妥的撑不住,赶紧修改pm.max_children和pm.max_spare_servers为25,pm.max_children表示最大的子进程数;pm.max_spare_servers表示最大空闲进程数,如果空闲进程数超过设置的值就会被清理掉;pm.min_spare_servers表示最小示空闲进程数,如果当前进程数小于该值则会新建进程

pm = dynamic
pm.status_path = /phpfpm_56_status
pm.max_children = 25
pm.start_servers = 15
pm.min_spare_servers = 15
pm.max_spare_servers = 25
request_terminate_timeout = 100
request_slowlog_timeout = 30
slowlog = var/log/slow.log

修改完成php-fpm.conf文件后重启php-fpm,命令如下:

[root@asdfasfa etc]# systemctl restart php-fpm

这个时候再用top命令看下内存占用,可以看到php-fpm数据少了,内存占用也降了下来,搞定!

然后可以再看下目前有多少个php-fpm进程,用命令ps -ef|grep "php-fpm"|grep "pool"|wc -l

[root@asdfasfa ~]# ps -ef|grep "php-fpm"
root      5283     1  0 14:56 ?        00:00:00 php-fpm: master process (/etc/php-fpm.conf)
www       5284  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5285  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5286  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5287  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5288  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5289  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5290  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5291  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5292  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5293  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5294  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5295  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5296  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5297  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5298  5283  0 14:56 ?        00:00:00 php-fpm: pool www
www       5301  5283  0 14:56 ?        00:00:00 php-fpm: pool www
root      5642  2936  0 15:00 pts/0    00:00:00 grep --color=auto php-fpm
[root@asdfasfa ~]# ps -ef|grep "php-fpm"|grep "pool"|wc 
     16     160    1056
[root@asdfasfa ~]# ps -ef|grep "php-fpm"|grep "pool"|wc -l
16
[root@iZ2ze847ngk4zxvazwm13lZ ~]# 

最后补充下,php-fpm是FastCGI进程管理工具,提供了更好的PHP进程管理方式,可以有效控制内存和进程、可以平滑重载PHP配置。
具体的工作原理:

1)Web Server启动同时,加载FastCGI进程管理器
2)FastCGI进程管理器读取php.ini配置文件,对自身进行初始化,启动多个CGI解释器进程(php-cgi),等待来自Web Server的连接。
3)当Web Server接收到客户端请求时,FastCGI进程管理器选择并连接到一个CGI解释器。Web server会将相关环境变量和标准输入发送到FastCGI子进程php-cgi进行处理
4)FastCGI子进程完成处理后将数据按照CGI规定的格式返回给Web Server,然后关闭FastCGI子进程或者等待下一次请求。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/573780.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深入探索: 对象构造的隐藏功能与技巧

🧑‍💻CSDN主页:夏志121的主页 📋专栏地址:Java基础进阶核心技术专栏 目录 🎃 一、重载 🎄 二、默认字段初始化 🎆 三、无参数的构造器 ✨ 四、显式字段初始化 🎊 五…

Vue(路由插件)

一、介绍路由 1. 路由就是一组key-value的对关系,多个路由需要经过路由器进行管理 2. 主要应用在SPA(单页面应用) 在一个页面展示功能之间的跳转 特点: 当跳转时候不进行页面刷新路径随着变化展示区变化但是不开启新的页签 …

总结丨SGAT单基因关联分析工具,一文上手使用

SGAT是一个免费开源的单基因分析工具,基于Linux系统实现自动化批量处理,能够快速准确的完成单基因和表型的关联分析,只需要输入基因型和表型原始数据,即可计算出显著关联的SNP位点,并自动生成结果报告。 前段时间陆续的…

YOLOv5白皮书-第Y4周:common.py文件解读

目录 0.导入需要的包和基本配置1.基本组件1.1 autopad1.2 Conv1.3 Focus1.4 Bottleneck1.5 BottleneckCSP1.6 C31.7 SPP1.8 Concat1.9 Contract、Expand 2.重要类2.1 非极大值抑制(NMS)2.2 AutoShape2.3 Detections2.4 Classify 🍨 本文为&am…

【头歌实训】【基于 Logisim 的 RISC-V 处理器设计 · 终】

真的恶心,我哭死 目录 前言 一、说明 1、参考 2、建议 二、处理器设计 三、Control器件设计 1、加速经常性事件,提高效率 2、控制信号设置 1.RegWEn 2.IMMSel 3.BSel 4.ALUSel & WBSel 5.MemWEn 6.PCSel & ASel 7.ALUB 总结…

【C语言】标准库(头文件、静态库、动态库),windows与Linux平台下的常用C语言标准库

一、Introduction1.1 C语言标准库1.2 历代C语言标准1.3 主流C语言编译器 二、C语言标准库2.1 常用标准头文件2.2 常用标准静态库 三、windows平台四、Linux平台五、常用头文件功能速览5.1 通用常用头文件01. stdio.h——标准输入输出02. stdlib.h——内存管理与分配、随机数、字…

Git常用命令reset和revert

Git常用命令reset和revert 1、reset 用于回退版本,可以指定退回某一次提交的版本。 checkout 可以撤销工作区的文件,reset 可以撤销工作区/暂存区的文件。 reset 和 checkout 可以作用于 commit 或者文件,revert 只能作用于 commit。 命…

为什么 String#equals 方法在做比较时没有使用 hashCode

一个疑问的引入 我之前出于优化常数项时间的考虑,想当然的认为 String#equals 会事先使用 hashCode 进行过滤 我想像中的算法是这样的 当两个 hashCode 不等时,直接返回 false(对 hash 而言,相同的输入会得到相同的输出&#x…

数据安全复合治理框架和模型解读(0)

数据治理,数据安全治理行业在发展,在实践,所以很多东西是实践出来的,哪有什么神仙理论指导,即使有也是一家之说,但为了提高企业投产比,必要的认知是必须的,当前和未来更需要专业和创新。数据安全治理要充分考虑现实数据场景,强化业务安全与数据安全治理,统一来治理,…

学会了程序替换,我决定手写一个简易版shell玩一玩...

文章目录 💐专栏导读💐文章导读🐧程序进程替换🐦替换原理🐦替换函数🐔观察与结论🐔函数命名理解 🐧myshell编写🔔代码展示🔔效果展示 🐧myshell_p…

Vue电商项目--分页器制作

分页器静态组件 分页这个组件&#xff0c;不单单是一个页面用到了。多个页面同时用它,因此我们可以封装成一个全局组件 需要将这个分页结构拆分到components 通用的分页组件Pagination <template><div class"pagination"><button>1</butto…

【C语言】函数规则及入门知识

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;C语言 ⚡注&#xff1a;此篇文章的 部分内容 将根据《高质量 C/C 编程指南》 —— 林锐 进行说明。该部分将用橙色表示。 &#x1f525;该篇…

新手建站:使用腾讯云轻量服务器宝塔面板搭建WP博客教程

腾讯云轻量应用服务器怎么搭建网站&#xff1f;太简单了&#xff0c;轻量服务器选择宝塔Linux镜像&#xff0c;然后在宝塔面板上添加站点&#xff0c;以WordPress建站为例&#xff0c;腾讯云服务器网来详细说下腾讯云轻量应用服务器搭建网站全流程&#xff0c;包括轻量服务器配…

html5视频播放器代码实例(含倍速、清晰度切换、续播)

本文将对视频播放相关的功能进行说明&#xff08;基于云平台&#xff09;&#xff0c;包括初始化播放器、播放器尺寸设置、视频切换、倍速切换、视频预览、自定义视频播放的开始/结束时间、禁止拖拽进度、播放器皮肤、控件按钮以及播放控制等。 图 / html5视频播放器调用效果&a…

java web 基础springboot

1.SprintBootj集成mybaits 连接数据库 pom.xml文件添加依赖 <!-- mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.30</version></dependency><!-- …

学习HCIP的day.09

目录 一、BGP&#xff1a;边界网关路由协议 二、BGP特点&#xff1a; 三、BGP数据包 四、BGP的工作过程 五、名词注解 六、BGP的路由黑洞 七、BGP的防环机制—水平分割 八、BGP的基本配置 一、BGP&#xff1a;边界网关路由协议 是一种动态路由协议&#xff0c;且是…

花果山博客

1&#xff1a;前言 2&#xff1a;项目介绍 3&#xff1a;统一返回结果 4&#xff1a;登录功能实现 前言 简单介绍一个写这个博客的目的。 因为之前学开发都是学完所需的知识点再去做项目&#xff0c;但是这时候在做项目的过程中发现以前学过的全忘了&#xff0c;所以为了减少这…

Vue3导入Element-plus方法

先引入依赖 npm install element-plus --savemain.js中要引入两个依赖 import ElementPlus from element-plus; import "element-plus/dist/index.css";然后 这个东西 我们最好还是挂载vue上 所以 还是 createApp(App).use(ElementPlus)然后 我们可以在组件上试一…

腾讯云轻量服务器镜像安装宝塔Linux面板怎么使用?

腾讯云轻量应用服务器宝塔面板怎么用&#xff1f;轻量应用服务器如何安装宝塔面板&#xff1f;在镜像中选择宝塔Linux面板腾讯云专享版&#xff0c;在轻量服务器防火墙中开启8888端口号&#xff0c;然后远程连接到轻量服务器执行宝塔面板账号密码查询命令&#xff0c;最后登录和…

从零搭建微服务-认证中心(二)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff1a;https://gitee.com/csps/mingyue 文档地址&#xff1a;https://gitee.com/csps/mingyue/wikis 创建新项目 MingYue Idea 创建 maven 项目这…