0

0

php 进程太多怎么办

藏色散人

藏色散人

发布时间:2021-11-17 09:22:54

|

4070人浏览过

|

来源于php中文网

原创

php进程太多的解决办法:1、通过“ps -ef  | wc -l”命令查看当前系统的进程;2、再使用相关命令查看占用内存最大的进程;3、查询php-fpm进程;4、杀死进程或限制内存大小即可。

php 进程太多怎么办

本文操作环境:linux5.9.8系统、PHP5.5版、DELL G3电脑

php 进程太多怎么办?

linux服务器php-fpm进程数过多导致内存占满处理:

早上到单位 发现服务器 mysql 服务器停了 然后起来了

查询日志 显示 内存满了 把mysql服务给杀了 linux 服务器如果 内存满了 会自动清理进程 防止服务器挂掉 选择的话 谁占的的内存大 就先杀谁 我的服务器里面 mysql服务占的内存是最大的 所以就把mysql就给杀了

 然后 重启mysql 查询内存

立即学习PHP免费学习笔记(深入)”;

在这说一下 怎么看linux的内存

举个例子

如下显示free是显示的当前内存的使用,-m的意思是M字节来显示内容.我们来一起看看.

$ free -m
total  used  free  shared  buffers  cached
Mem:  1002M  769M 232M  0M  62M  421M
-/+ buffers/cache:  286M  715M
Swap:  1153M  0M  1153M
---------------------------
真实内存占用 = used-buffers-cached = 286M
-----------------

 

第一部分Mem行:

total 内存总数: 1002M
used 已经使用的内存数: 769M
free 空闲的内存数: 232M
shared 当前已经废弃不用,总是0
buffers Buffer 缓存内存数: 62M
cached Page 缓存内存数:421M

 

关系:total(1002M) = used(769M) + free(232M)

 

第二部分(-/+ buffers/cache):

(-buffers/cache) used内存数:286M (指的第一部分Mem行中的used - buffers - cached)
(+buffers/cache) free内存数: 715M (指的第一部分Mem行中的free + buffers + cached)

 

可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

 

第三部分是指交换分区, 我想不讲大家都明白.

 

我想大家看了上面,还是很晕.第一部分(Mem)与第二部分(-/+ buffers/cache)的结果中有关used和free为什么这么奇怪.

其实我们可以从二个方面来解释.

对操作系统来讲是Mem的参数.buffers/cached 都是属于被使用,所以它认为free只有232.

对应用程序来讲是(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。

 

所以,以应用来看看,以(-/+ buffers/cache)的free和used为主.所以我们看这个就好了.另外告诉大家一些常识.Linux为了提高磁盘和内存存取效率, Linux做了很多精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路 径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache能有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

 

记住内存是拿来用的,不是拿来看的.不象windows, 无论你的真实物理内存有多少,他都要拿硬盘交换文件来读.这也就是windows为什么常常提示虚拟空间不足的原因.你们想想,多无聊,在内存还有大部分的时候,拿出一部分硬盘空间来充当内存.硬盘怎么会快过内存.所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常 swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准哦.

--------------------------------------------------------------------------------------------------------------------------

接来下

发现服务器的内存就剩1.9G了 再用top命令 查看一下

 

第一行top分别为:当前时间;系统运行天数;使用者个数;系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,这个数值超过 CPU 数目时,说明负载过高

第二行Tasks分别为:进程总数;运行进程数;睡眠进程数;被停止的进程数;被复原的进程数

第三行CPU(s)分别为:

us:user 用户空间占用cpu的百分比 
sy:system 内核空间占用cpu的百分比 
ni:niced 改变过优先级的进程占用cpu的百分比 
空闲cpu百分比 
wa:IO wait IO等待占用cpu的百分比 
hi:Hardware IRQ 硬中断 占用cpu的百分比 
si:software 软中断 占用cpu的百分比 
st:被hypervisor偷去的时间

第四行Mem分别为:总内存;已用内存;空闲内存;缓冲使用中内存

第五行(Swap):类似第四行,但反映着交换分区(Swap)的使用情况。交换分区(Swap)被频繁使用,可以看作物理内存不足而造成的

top 输出界面的顶端,也显示了系统整体的内存使用情况,这些数据跟 free 类似,我就不再重复解释。我们接着看下面的内容,跟内存相关的几列数据,比如 VIRT、RES、SHR 以及 %MEM 等。

这些数据,包含了进程最重要的几个内存使用情况,我们挨个来看。

  • VIRT 是进程虚拟内存的大小,只要是进程申请过的内存,即便还没有真正分配物理内存,也会计算在内。
  • RES 是常驻内存的大小,也就是进程实际使用的物理内存大小,但不包括 Swap 和共享内存。
  • SHR 是共享内存的大小,比如与其他进程共同使用的共享内存、加载的动态链接库以及程序的代码段等。
  • %MEM 是进程使用物理内存占系统总内存的百分比。

除了要认识这些基本信息,在查看 top 输出时,你还要注意两点。

第一,虚拟内存通常并不会全部分配物理内存。从上面的输出,你可以发现每个进程的虚拟内存都比常驻内存大得多。

杰易OA办公自动化系统6.0
杰易OA办公自动化系统6.0

基于Intranet/Internet 的Web下的办公自动化系统,采用了当今最先进的PHP技术,是综合大量用户的需求,经过充分的用户论证的基础上开发出来的,独特的即时信息、短信、电子邮件系统、完善的工作流、数据库安全备份等功能使得信息在企业内部传递效率极大提高,信息传递过程中耗费降到最低。办公人员得以从繁杂的日常办公事务处理中解放出来,参与更多的富于思考性和创造性的工作。系统力求突出体系结构简明

下载

第二,共享内存 SHR 并不一定是共享的,比方说,程序的代码段、非共享的动态链接库,也都算在 SHR 里。当然,SHR 也包括了进程间真正共享的内存。所以在计算多个进程的内存使用时,不要把所有进程的 SHR 直接相加得出结果。

只是这样看 还是不行 感觉内存 不应该 占用很多 然后 使用命令 查看 当前系统有多少进程

ps -ef  | wc -l

 

然后使用命令查看占用内存最大的500个进程:

ps -aux | sort -k4nr | head -n 500

截取部分 PHP的进程 占到了200个 每个都100多兆

 

 

解释一下含义

USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态,linux的进程有5种状态:
D 无法中断的休眠状态(通常 IO 的进程);
R 正在运行可中在队列中可过行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换  (从内核2.6开始无效);
X 死掉的进程   (基本很少見);
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ 位于后台的进程组;
注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令

查询PHP-fpm 总进程数

pstree|grep php-fpm

然后 查询 php-fpm 进程

ps -ef|grep php-fpm

发现PHP起了四个主进程 这里截取了三个

 

然后看的PHP 的配置文件

 

发现配置的 是 静态 配置的50个进程 四个主进程 每个配50个子进程 就200多个进程     进程太多了    平时的话  一般就六七个进程在处理    修改 进程数量   把50  改成10      这个进程数量  根据自己服务器的内存大小  来设置

查看当前php-fpm进程的内存占用情况及启动时间,命令如下:

ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'|grep www|sort -nrk5

查看当前php-fpm进程平均占用内存情况,一般来说一个php-fpm进程占用的内存为30-40MB,命令如下:

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

然后我重启了PHP 指定配置文件

步骤

先  查找  然后  杀死

ps aux |grep php
kill 21605 (进程pid)

检测

 

启动

./php-fpm -y /usr/local/php/etc/php-fpm.conf

重启完 内存就降下来了

然后就事查找问题 猜测是内存泄露 但是不确定是哪里 对一些感觉有问题的地方 加上了unset()

然后检测 发现 内存一直都很平稳

如果内存还是一直增加 可以限制内存大小

设置方法:编辑php-fpm.conf配置文件

php_admin_value[memory_limit] = 128M(我服务器上的配置文件在/etc/php5/fpm/pool.d/www.conf 这个文件是被包含在php-fpm.conf里的) 后边的数字可以随便更改:32M,64M,128M,256M,512M,这个设置可根据你的服务器内存大小和你的需求来写,修改后要加载一下php-fpm服务。

这个时候 程序那个步骤出问题了 就说明哪里有内存泄露 但是也不是绝对的 这里还要了解一下 PHP的垃圾回收机制

如果你在一个进程里面 应该也是 累加的 也不是很好判断 就要根据程序 对不用的变量进程销毁 或者 限制 PHP的进程数量

注: 普通用户数据1000条 存在数组里面 大约占2246.2734375kb

普通用户数据2000条 存在数组里面 大约占4472.8671875kb

 推荐学习:《PHP视频教程

相关文章

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

1924

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1262

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1168

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

948

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1399

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1229

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1439

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1303

2023.11.13

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.1万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号