最近php-fpm服务器经常内存偏高。

最简单也是马上见效的方法是重启服务,干脆重启服务器,这个对于某些临时进程导致的内存虚高可能有效,这里显然是不行滴。很可能影响到业务。

解决

查看服务器内存及进程状况

php-fpm参数概述

下面对每个参数的意义进行简要的概述分析

pm=dynamic

该项共有三种设置方式 static 、 dynamic 、ondemand

一种是pm = static,始终保持一个固定数量的子进程,这个数由pm.max_children定义,这种方式很不灵活,也通常不是默认的。

另一种是pm = dynamic,他是这样的,启动时,会产生固定数量的子进程(由pm.start_servers控制)可以理解成最小子进程数,而最大子进程数则由pm.max_children去控制,这样的话,子进程数会在最大和最小数范围中变化,还没有完,闲置的子进程数还可以由另2个配置控制,分别是pm.min_spare_servers和pm.max_spare_servers,也就是闲置的子进程也可以有最小和最大的数目,而如果闲置的子进程超出了pm.max_spare_servers,则会被杀掉。(注意,pm.max_spare_servers应小于pm.max_children)

第三种就是pm = ondemand模式,这种模式和pm = dynamic相反,把内存放在第一位,他的工作模式很简单,每个闲置进程,在持续闲置了pm.process_idle_timeout秒后就会被杀掉,有了这个模式,到了服务器低峰期内存自然会降下来,如果服务器长时间没有请求,就只会有一个php-fpm主进程,当然弊端是,遇到高峰期或者如果pm.process_idle_timeout的值太短的话,无法避免服务器频繁创建进程的问题,因此pm = dynamic和pm = ondemand谁更适合视实际情况而定。

可以看到,pm = dynamic模式非常灵活,也通常是默认的选项。但是,dynamic模式为了最大化地优化服务器响应,会造成更多内存使用,因为这种模式只会杀掉超出最大闲置进程数(pm.max_spare_servers)的闲置进程,比如最大闲置进程数是30,最大进程数是50,然后网站经历了一次访问高峰,此时50个进程全部忙碌,0个闲置进程数,接着过了高峰期,可能没有一个请求,于是会有50个闲置进程,但是此时php-fpm只会杀掉20个子进程,始终剩下30个进程继续作为闲置进程来等待请求,这可能就是为什么过了高峰期后即便请求数大量减少服务器内存使用却也没有大量减少,也可能是为什么有些时候重启下服务器情况就会好很多,因为重启后,php-fpm的子进程数会变成最小闲置进程数,而不是之前的最大闲置进程数。

max_requests

即是说每个进程若超过这个数目(跟php进程有一点点关系,关 系不大),就自动杀死.

max_children

最大进程数,一般来说一台服务器正常情况下每一个php-fpm所耗费的内存在40M左右,理想最大进程数可计算为1000/40=25,但是实际上内存不止有php-fpm在占用,故可根据实际情况来,适当减小使得内存不会因php-fpm进程过多而耗尽。而如果我 的”max_children”设置的较小,比如5-10个,那么php-fpm就会“很累”,处理速度也很慢,等待的时间也较长。如果长时间没有得到处 理的请求就会出现504 Gateway Time-out这个错误。

request_terminate_timeout

据你服务器的性能进行设定。一般来说性能越好你可以设置越高,20分钟-30分钟都可以。由于我的服务器PHP脚本需要长时间运行,有的可能会超过10分 钟因此我设置了1200秒,这样不会导致php-fpm死掉而出现502 Bad gateway这个错误。

pm.start_servers

动态方式下的起始php-fpm进程数量

pm.min_spare_servers

动态方式下的最小php-fpm闲置进程数

pm.min_spare_servers

动态方式下的最大php-fpm闲置进程数量

由于方便管理把php-fpm配置文件拆开了。在/opt/plesk/php/7.1/etc/php-fpm.d目录下

这样我们就可以定位到是哪个占用

[root@orion php-fpm.d]# ls

aabus.com.conf coachrun.com.conf jadiamortgage.com.conf jadia.net.conf livechat.taketours.com.conf lltours.com.conf sunshineboston.com.conf

[root@orion php-fpm.d]# vim livechat.taketours.com.conf

这是之前的配置文件:

pm = ondemand #按需ondemand

pm.max_children = 5 #最大进程数

pm.max_spare_servers = 1 #动态方式下的最大php-fpm闲置进程数量

pm.min_spare_servers = 1 #动态方式下的最小php-fpm闲置进程数

pm.process_idle_timeout = 10s #按需方式下多长时间杀掉php-fpm子进程,直到master进程

pm.start_servers = 1 #动态方式下的起始php-fpm进程数量

修改后的配置:

pm = ondemand

pm.max_children = 5

pm.max_spare_servers = 2

pm.min_spare_servers = 2

pm.process_idle_timeout = 10s

pm.start_servers = 1

pm.max_requests = 1024 指的是每个子进程在处理了1024个请求数量之后就重启

跟踪一阵时间后发现内存在30000kb左右波动,进程使用的物理内存百分比才0.1%

php 管理服务器内存,解决PHP-FPM进程导致的服务器内存占用相关推荐

  1. ios的vn服务器未响应,iOS应用程序导致内部服务器错误

    我有一个很奇怪的问题.我的应用程序正在导致我的服务器狂暴.iOS应用程序导致内部服务器错误 我的iOS应用程序使用TFHPPLE解析来自服务器上的PHP页面的数据.它从页面抓取一个名称,并检查该广告系 ...

  2. windows进程管理器_系统变慢?WMI进程导致的CPU高占用解决

    我们有时会遇到系统变慢的情况,查看资源任务管理窗口发现是WMI导致的CPU高占用所致.那么,WMI究竟为何物,能否解除由它导致的CPU高占用,如何解除? 1. 查明WMI的来龙去脉 WMI是Windo ...

  3. apache php 内存,不再为Apache进程淤积、耗尽内存而困扰

    本篇文章是为使用Apache+MySQL,并为Apache耗尽内存而困扰的系统管理员而写.如果您没有耐心读完本文,请参考以下步骤: 修改/etc/my.cnf,加上这样一行: log-slow-que ...

  4. 微信图片消息 服务器故障,解决图片上传到微信服务器后无法显示问题

    标签:attr   ict   viewport   使用   完全   example   cache   ber   copy vue项目里可以添加到app.vue 关于referrer 在页面引 ...

  5. win10修复tcp驱动服务器,怎么解决tcpip.sys文件导致蓝屏|Win10的tcpip修复工具

    由tcpip.sys文件引起的蓝屏错误,错误代码为:0x000000D1,表示硬件设备的驱动程序遇到了问题.引起错误的文件是tcpip.sys,那么应该是与网卡驱动有关.这篇文章是PE吧给大家带来的解 ...

  6. xp 4g内存补丁_32位操作系统导致电脑可用内存不足4G

    现象描述 今天给大家分享一个关于电脑使用的小知识:电脑安装32位操作系统,导致电脑可用内存低于4G. 详细解释一下:如果你的电脑安装的操作系统是32位操作系统,无论你电脑安装了多大的内存,可用内存都不 ...

  7. 讲述Sagit.Framework解决:双向引用导致的IOS内存泄漏(上)

    前言: 好久没写文章了,最近先是重构IT恋.又重写IT恋中. Sagit框架也不断的更新,调整,现在感觉已完美了了相当的多. 今天不写教程,先简单分享一下技术内容. 1:见Block必有:#defin ...

  8. 解决AlibabaProtect.exe进程导致U盘无法被安全卸载

    平时使用U盘,经常会遇到"安全删除设备",点击后U盘没有被正常弹出.用360U盘助手弹出也会无效,好在360安全助手会报告没有弹出的原因,通过提示可以看到U盘是被一个"A ...

  9. 索赔cs1.6最新服务器,成功解决CS1.6刷不出服务器

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 这个也行 "MasterServers" { "hl1" { "0" { "addr ...

最新文章

  1. php新增数组函数,php操作数组函数
  2. iOS之开发中一些相关的路径以及获取路径的方法
  3. HDU 1556 Color the Ball 线段树 题解
  4. opencv函数findcontours_OpenCV系列之轮廓入门 | 二十一
  5. linux系统做的小游戏,2007最新 100个Linux系统上的小游戏汇集
  6. fastboot no permission
  7. python将学生信息保存到文件中_Python statsmodels OLS:如何将学习的模型保存到文件中...
  8. hdu 2363(最短路+枚举)
  9. qt 进度条最小_QT:圆形进度条设计
  10. [USACO16OPEN]262144
  11. linux下mysql允许远程连接
  12. nginx基于tcp负载均衡
  13. 【foobar 2000】如何在手机、电脑上播放局域网内另一台电脑上存储的音乐?FTP服务器、UPnP/DLNA协议、构建Music server、创建音乐服务器
  14. CSR8811蓝牙音频发射一拖二解决方案
  15. iptables防火墙规则
  16. 把Android API文档的颜色改成不易疲劳的绿豆沙颜色
  17. mysql 法语字符比较_法语词典哪种比较好?
  18. Bootstrap-表格合并单元格
  19. Unity 游戏的String interning优化
  20. Oracle数据库:约束条件:主键约束、唯一约束、检查约束、非空约束、外键约束、默认值填写

热门文章

  1. 热点推荐:程序员路在何方
  2. 【转载】x86和x64
  3. C#中使用DateTimePicker控件显示修改日期时间
  4. NTFRS事件ID:13568
  5. Linux服务器负载均衡LB
  6. Java 慎用方法级别的synchronized关键字
  7. linux expect 自动交互 执行命令 超时 不完整 中断 解决方法
  8. DPDK(Data Plane Development Kit)快速处理数据包 开发平台及接口 简介
  9. 检查 linux guest vm 使用的什么 虚拟化技术
  10. 关于node js和 npm 版本不匹配的情况