解决CentOS 7中php-fpm进程数过多导致服务器内存资源消耗较大的问题
本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=653
什么是php-fpm:
php-fpm即FastCGI进程管理器,用于控制php的内存和进程等。
操作环境:
CentOS 7
问题检查:
首先查看php进程总数:
pstree|grep php-fpm
回显:
|-php-fpm---20*[php-fpm]
根据回显信息可知,查询时有20个php-fpm进程。
也可以通过下面的命令列出消耗内存最多的前50个进程:
ps auxw|head -1;ps auxw|sort -rn -k4|head -50
解决过程:
下面我们通过修改配置文件来优化php-fpm,以达到降低内存使用率的目的。
我的php-fpm配置文件在 …/server/php/etc/ 目录下,进入该目录。
先备份一下原配置文件:
cp php-fpm.conf php-fpm.conf.bak
注:使用vim打开配置文件后,按Esc键,之后输入”/”, 再输入“xxx”可以查找“xxx”这个字符串。
具体配置参数如下:
pm.max_children = 100改为:pm.max_children = 25
pm.start_servers = 20改为pm.start_servers = 5
pm.min_spare_servers = 5改为pm.min_spare_servers = 2
pm.max_spare_servers = 35改为pm.max_spare_servers = 10
重启服务器:
reboot
重启后可以发现内存使用率相比于之前降低了。
注:
- php-fpm.conf中参数作用的说明:
pm.max_children:静态方式下开启的php-fpm进程数量。
pm.start_servers:动态方式下的起始php-fpm进程数量。
pm.min_spare_servers:动态方式下的最小php-fpm进程数。
pm.max_spare_servers:动态方式下的最大php-fpm进程数量。 进行上述设置时,我将php-fpm的执行方式设置成了动态:
pm = dynamicphp-fpm有两种执行方式:
一种是Static静态,另一种是Dynamic动态。如果设置成静态,那么只有 pm.max_children 这个参数起作用。如果设置成动态则有 pm.start_servers 、 pm.min_spare_servers 和 pm.max_spare_servers 这三个参数起作用。设置成动态后,当php-fpm启动时会按照 pm.start_servers 的参数设置启动相应个数的进程,之后php-fpm的进程数量将维持在 pm.min_spare_servers 和 pm.max_spare_servers 指定的个数之间。- 如何选择使用php-fpm的静态还是动态执行方式:
动态php-fpm执行方式允许php-fpm释放多余进程,从而节约内存资源。
静态php-fpm执行方式不允许php-fpm释放多于进程,避免了频繁开启或停止php-fpm进程,从而降低了服务器在某些情况下的响应时间。
解决CentOS 7中php-fpm进程数过多导致服务器内存资源消耗较大的问题的更多相关文章
- 解决MWPhotoBrowser中的SDWebImage加载大图导致的内存警告问题
下面两种现象,用同一种方法解决 1.解决MWPhotoBrowser中的SDWebImage加载大图导致的内存警告问题 2.突然有一天首页访问图片很慢,至少隔20多秒所有图片才会出来.(解析:app使 ...
- 解决长时间计划任务rsync同步进程数过多
用rsync同步远程服务器,由于设置的的同步间隔较短(5分钟),这样一旦网速问题导致5分钟内同步不完.就会倒是同步紊乱,导致系统中很多rsync进程(# ps -aux | grep rsync) ...
- ArcSOC进程数不断增长导致oracle processes溢出原因分析
现场出现了一个问题,oracle运行一段时间之后,process个数会溢出,然后新的连接会失败.通过分析,发现Arcgis Server 的ArcSOC进程在不段增长.ArcSOC是arcgis se ...
- Linux下查看哪些进程占用的CPU、内存资源
1.CPU占用最多的前10个进程: ps auxw|head -1;ps auxw|sort -rn -k3|head -10 2.内存消耗最多的前10个进程 ps auxw|head -1;ps a ...
- 解决CentOS(RedHat)中sendmail和sm-client启动慢故障(转)
Starting sendmail: Starting sm-client: 刚才发了修改主机名那篇文章后,我意外发现重新启动CentOS的时候系统会卡在sendmail和sm-client那里将近3 ...
- Docker: 解决Centos 7中Permission Denied的问题
当用docker -v挂载volume后,会出现Permission Denied的问题,这有时是因为SeLinux导致的.解决方法如下: chcon -Rt svirt_sandbox_file_t ...
- 解决Hangfire 导致服务器内存飙涨
最近因为项目需要调度作业服务,之前看张队推荐过一篇https://www.cnblogs.com/yudongdong/p/10942028.html 故直接拿过来实操,发现很好用,简单.方便 执行 ...
- Linux下php-fpm进程过多导致内存耗尽问题
这篇文章主要介绍了解决Linux下php-fpm进程过多导致内存耗尽问题,需要的朋友可以参考下 最近,发现个人博客的Linux服务器,数据库服务经常挂掉,导致需要重启,才能正常访问,极其恶心,于是 ...
- PHP-FPM进程数的设定
近日,服务器出现异常,网站不能正常访问.经排查是php的问题. 在重启php-fpm时,恢复正常.1分钟之后又出现故障.查看php日志文件 /usr/local/php/var/log 后提示 WAR ...
随机推荐
- HADOOP中的CRC数据校验文件
Hadoop系统为了保证数据的一致性,会对文件生成相应的校验文件(.crc文件),并在读写的时候进行校验,确保数据的准确性.在本地find -name *.crc -print 看 比如我们遇到的这个 ...
- Struts2技术内幕 读书笔记一 框架的本质
本读书笔记系列,主要针对陆舟所著<<Struts2技术内幕 深入解析Strtus2架构设计与实现原理>>一书.笔记中所用的图片若无特殊说明,就都取自书中,特此声明. 什么是框架 ...
- Android Data Binding代码实践(告别findViewById)(四)
Data Binding实战(一) Data Binding语法解析(二) Data Binding高级用法(三) 好了,继前三篇学习了Data Binding之后,我们可以发现它的强大之处有这么几点 ...
- Redis 协议为例谈简单的协议分析
怎样去研究一个协议的过程,协议的格式,好处,怎么样模拟发包等,下面是一个简单的过程记录. 研究的步骤: 协议相关的资料,RFC,官方文档等.弄清楚协议工作在4层还是7层,是二进制还是文本协议等 抓包, ...
- unix下对于字符串变量的各种操作总结
在unix like系统的shell中,提供了很多操作字符串变量的灵活语法,我们接下来依次来看一看. apple@kissAir: ~$path=$PATH apple@kissAir: ~$echo ...
- 棋盘的完美覆盖问题,c++代码实现
#include "stdafx.h" #include<iostream> #include<iomanip> using namespace std; ...
- rails自动生成大量记录的方法
因为我们可能rails new了一个网站出来,但是里面没有测试数据,我们不能傻乎乎的在new.html.erb里面一个的手动输入吧?于是我们可以写一个小的脚本来帮助在数据库中插入大量数据:高版本的ra ...
- svn 不能添加.a文件
1.打开终端输入 open ~/.subversion/ 2.双击打开config文件 3.修改如下两行 # global-ignores = *.o *.lo *.la *.al .libs ...
- 基础概念:Oracle数据库、实例、用户、表空间、表之间的关系
基础概念:Oracle数据库.实例.用户.表空间.表之间的关系 数据库: Oracle数据库是数据的物理存储.这就包括(数据文件ORA或者DBF.控制文件.联机日志.参数文件).其实Oracle数据库 ...
- linux上安装redis的踩坑过程
redis用处很广泛,我不再啰嗦了,我按照网上教程想在linux上安装下,开始了踩坑过程,网上买了一个linux centos7.3,滴滴云的,巨坑无比啊,不建议大家用这家的! redis 为4.0, ...