php-fpm运行一段时间,内存不足

目录

一:原因分析

二:解决

三:观察系统情况


php-fpm运行一段时间,内存不足,是什么原因呢。

一:原因分析

1:首先php-fpm的配置  

(1)启动的进程数  启动的进程数越多,占用内存越高;

2:其次程序处理逻辑,处理完内存是否释放;

程序处理完,内存为什么不释放呢(我的都是http请求,只要请求不出错,处理完会自动释放);

(1)查看内存占用

ps -A --sort -rss -o comm,pmem,pcpu |uniq -c |head -15    占用内存排序

查看php-fpm cpu占有率排序

ps -A --sort -rss -o comm,pmem,pcpu |grep php-fpm|awk '{print $3}'|sort

查看php-fpm的内存超过1%的pid

ps aux|grep php-fpm|grep -v grep|awk '{if($4>=0.6)print $2}'

ps -ylC php-fpm --sort:rss        php-fpm占用内存情况

(2)查看php-fpm占用的平均内存

ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'

发现平均是24M内存,一共100个进程 也就是2个多G

3:我的服务器一直会写日志

导致 系统cache缓存越来越大 所以导致系统内存越来越小

4:查看php-fpm的日志php-fpm.log

从2017-3到2017-8查看日志变化

正常的执行时间超过2s进程过程:

WARNING: [pool www] child 20690, script '/data/wwwroot/sdk.youjoy.tv/index.php' (request: "GET /api/user/info") executing too slow (2.109854 sec), logging

[09-Mar-2017 22:04:18] NOTICE: child 20690 stopped for tracing

[09-Mar-2017 22:04:18] NOTICE: about to trace 20690

[09-Mar-2017 22:04:18] NOTICE: finished trace of 20690

执行超时的日志

 20709, script '/data/wwwroot/newddzgzh.youjoy.tv/index.php' (request: "POST /index/getreward") execution timed out (60.143872 sec), terminating

[10-Mar-2017 21:36:37] WARNING: [pool www] child 20704, script '/data/wwwroot/newddzgzh.youjoy.tv/index.php' (request: "POST /index/valid") execution timed out (60.158891 sec), terminating

[10-Mar-2017 21:36:37] WARNING: [pool www] child 20704 exited on signal 15 (SIGTERM) after 357304.947644 seconds from start

[10-Mar-2017 21:36:37] NOTICE: [pool www] child 6897 started

[10-Mar-2017 21:36:37] WARNING: [pool www] child 20709 exited on signal 15 (SIGTERM) after 357304.930312 seconds from start

二:解决

1(优化php-fpm的库)

(1)查看库

pmap $(pgrep php-fpm|head -

发现内存载入的大文件

/usr/lib/locale/locale-archive

这个文件是关于语言支持的,默认包含各种语言和字符集支持,服务器用的是字符界面,根本不需要那么多,有en_US.UTF-8就差不多了,最多加个中文zh_CN

查看语言支持列表

localedef --list-archive

cd /usr/lib/locale/

mv locale-archive locale-archive.old

添加en_US.UTF-8和中文

localedef -i en_US -f UTF-8 en_US.UTF-8

 1036  localedef -i zh_CN -f UTF-8 zh_CN.UTF-8

 1037  localedef -i zh_CN -f GB2312 zh_CN

 1038  localedef -i zh_CN -f GB2312 zh_CN.GB2312

 1039  localedef -i zh_CN -f GBK zh_CN.GBK

 1040  localedef -f UTF-8 -i zh_HK zh_HK.UTF-8

 1041  localedef -f UTF-8 -i zh_TW zh_TW.UTF-8

 1042  localedef -f UTF-8 -i zh_SG zh_SG.UTF-8

 pmap $(pgrep php-fpm|head -n 1)

2:查看slow.log

找出执行慢的代码,优化代码,减少执行时间,这样就能更快处理,及时释放内存;

3:通过观察发现php-fpm从重启完 每个进程占用0.4 到后来的0.6%  变化不太大;

slabtop 查看slabcache使用

跟踪进程的执行:

strace -fp 27868(pid) -e trace=stat

strace -fp 27868 -e trace=open,stat,close,unlink 

考虑系统cache占用一直增加;

调整系统cache让系统自动回收

(1) 查看 释放内存临界值:

grep low /proc/zoneinfo  最低

3个值相加*4KB 就是内存阈值

为640M

grep high /proc/zoneinfo  最高

(2)

sysctl -w vm.min_free_kbytes=524200  设置最小的空闲物理内存为512M(这些内存应用程序是不能占用的,是给系统用的)

sysctl -w vm.vfs_cache_pressure=130  加快cache的释放 默认100 越大释放越快 

/proc/sys/vm/vfs_cache_pressure

该文件表示内核回收用于directory和inode cache内存的倾向;缺省值100表示内核将根据pagecache和swapcache,把directory和inode cache保持在一个合理的百分比;降低该值低于100,将导致内核倾向于保留directory和inode cache;增加该值超过100,将导致内核倾向于回收directory和inode cache。

查看结果

sysctl -a|grep vm

三:观察系统情况

运行top,查看占用情况

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

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

相关文章

HarmonyOS自学-Day4(TodoList案例)

目录 文章声明⭐⭐⭐让我们开始今天的学习吧!TodoList小案例 文章声明⭐⭐⭐ 该文章为我(有编程语言基础,非编程小白)的 HarmonyOS自学笔记,此类文章笔记我会默认大家都学过前端相关的知识知识来源为 HarmonyOS官方文…

【蓝桥杯】比赛大纲整理

枚举[1-3] 排序 (1)冒泡排序[2] (2)选择排序[3] (3)插入排序[3] 搜索(bfs, dfs)[1-5] 贪心[1-5] 模拟[1-3] 二分[2-5] DP(普通一维问题)[3-5] 高精度[1-5] 数据结构 (1)栈[2-4]&…

Linux sed命令教程:如何使用流编辑器进行文本处理(附实例教程和注意事项)

Linux sed命令介绍 sed是stream editor的缩写,意为流编辑器。它是一种在命令行下处理文本文件的工具。sed主要用于自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。 Linux sed命令适用的Linux版本 sed命令在大多数Linux发行版中都是预装的&#…

Java插入排序:优雅整理数据的艺术

Java插入排序:优雅整理数据的艺术 大家好,我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,让我们一同深入研究Java中的排序算法,探讨…

1.NumPy 介绍

1.NumPy 介绍 1.1 NumPy 演变史 在 NumPy 之前,有两个 Python 数组包: Numeric 包 Numeric 包开发于 20 世纪 90 年代中期,在 Python 中提供了数组对象和数组感知函数。它由 C 语言编写,并与线性代数的标准快速实现相链接。它最…

nodejs微信小程序+python+PHP的林业信息管理系统的设计与实现-计算机毕业设计推荐

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性:…

nodejs+vue+微信小程序+python+PHP的冷链物流配送系统-计算机毕业设计推荐

对于冷链物流信息调度系统所牵扯的管理及数据保存都是非常多的,例如管理员;首页、用户管理(管理员、客户、业务员、配送员)客户管理(货物信息、客户运输单、车辆信息、调度安排)这给管理者的工作带来了巨大…

Redisson依赖冲突记录

前言&#xff1a;项目使用的springboot项目为2.7.X 依赖冲突一&#xff1a;springboot 与 redisson版本冲突 项目中依赖了 Lock4j&#xff0c;此为苞米豆开源的分布式锁组件 <dependency><groupId>com.baomidou</groupId><artifactId>lock4j-redisso…

读算法霸权笔记07_筛选

1. 美国残疾人法案 1.1. 1990年 1.2. 公司在招聘时使用身体检查是非法的 1.3. 有某些心理健康问题的人被“亮了红灯”&#xff0c;他们因此没能找到一份正常的工作&#xff0c;过上正常的生活&#xff0c;这就使其进一步被社会孤立&#xff0c;而这正是《美国残疾人法案》要…

使用Halcon 采集图像并进行简单处理rgbl_to_gray/threshold/connection/fill_up

使用Halcon 采集图像并进行简单处理 文章目录 使用Halcon 采集图像并进行简单处理 下面介绍一个简单的采集图像的例子。在Halcon中利用图像采集接口&#xff0c;使用USB3.0相机实时拍摄图像。采集到图像后对图像进行简单的阀值分割处理&#xff0c;将有物体的区域标记出来。 &a…

3d光学轮廓仪测微光学器件应用及其重要意义

微光学器件是光学器件的重要分支&#xff0c;为光学通信、光传感、光计算等领域的发展提供重要支撑。微光学器件具有尺寸小、功耗低、低成本等优势&#xff0c;可以于电子器件集成&#xff0c;实现更高效的数据传输和信号处理。未来&#xff0c;随着微纳加工技术的进一步发展&a…

prerender-spa-plugin使用总结

1. 介绍 prerender-spa-plugin 利用了 Puppeteer 的爬取页面的功能。 Puppeteer 是一个 Chrome官方出品的 headlessChromenode 库。它提供了一系列的 API, 可以在无 UI 的情况下调用 Chrome 的功能, 适用于爬虫、自动化处理等各种场景。它很强大&#xff0c;所以很简单就能将运…

在 Golang 应用程序中管理多个数据库

掌握在 Golang 项目中处理多个数据库的艺术 在当前软件开发领域中&#xff0c;处理单个应用程序内的多个数据库的需求越来越普遍。具有强大功能的 Golang 是处理此类任务的绝佳解决方案&#xff0c;无论您是与多个数据源合作还是仅为增强组织和可扩展性而分隔数据。在本文中&a…

FastAPI使用异步Redis

1. 安装依赖 pip install fastapi redis uvicorn 2. 主要代码 #!/usr/bin/env python import os import sys from contextlib import AbstractAsyncContextManager, asynccontextmanager from datetime import timedelta from pathlib import Pathfrom fastapi import FastA…

Java开发框架和中间件面试题(7)

目录 63.Spring中都应用了哪些设计模式&#xff1f; 64.请举例说明如何在Spring中注入一个Java Collection&#xff1f; 65.说一下都有哪些基本理念&#xff1f; 67.Spring Bean的生命周期&#xff1f; 68.说说Spring AOP的实现原理&#xff1f; 69.Spring中事务的实现方…

vue3导入excel并解析excel数据渲染到表格中,纯前端实现。

需求 用户将已有的excel上传到系统&#xff0c;并将excel数据同步到页面的表格中进行二次编辑&#xff0c;由于excel数据不是最终数据&#xff0c;只是批量的一个初始模板&#xff0c;后端不需要存储&#xff0c;所以该功能由前端独立完成。 吐槽 系统中文件上传下载预览三部…

在pytorch中,读取GPU上张量的数值 (数据从GPU到CPU) 的几种常用方法

1、.cpu() 方法&#xff1a; 使用 .cpu() 方法可以将张量从 GPU 移动到 CPU。这是一种简便的方法&#xff0c;常用于在进行 CPU 上的操作之前将数据从 GPU 取回 import torch# 在 GPU 上创建一个张量 gpu_tensor torch.tensor([1, 2, 3], devicecuda)# 将 GPU 上的张…

AI赋能金融创新:技术驱动的未来金融革命

人工智能&#xff08;AI&#xff09;作为一种技术手段&#xff0c;正逐渐改变金融行业的方方面面。从风险管理到客户体验&#xff0c;从交易执行到反欺诈&#xff0c;AI带来了许多创新和机遇。本文将探讨AI在金融领域的应用和其赋能的金融创新。 金融领域一直以来都面临着复杂的…

QT UI自动化测试(1)

一、框架选择 想结合公司产品搭建一套自动化测试框架&#xff0c;一方面自己学习用&#xff0c;一方面也希望跟公司业务结合起来&#xff0c;双赢。公司软件最多的产品是部署在Linux系统上&#xff0c;基于QT QML开发的UI&#xff0c;本来奔着免费的自动化框架去的&#xff0c;…

编写html的vscode快捷键

一快速生成 按住!(英文的)&#xff0c;回车。 二快捷键 1.代码格式化 用来对齐标签。整理代码&#xff0c;强迫症患者必备。 shiftaltf 2.快速移动一行 altdown altup 向上或向下移动一行 3.快速复制一行代码 ShiftAltUp ShiftAltDown 4.快速保存 Ctrl S 5.快速查…