如何使用内存检查超过设定值杀死php-fpm进程

建站服务器

小编给大家分享一下如何使用内存检查超过设定值杀死php-fpm进程,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

阿瓦提网站建设公司成都创新互联,阿瓦提网站设计制作,有大型网站制作公司丰富经验。已为阿瓦提近千家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的阿瓦提做网站的公司定做!

公司之前购买过一个源码,写这个源码的工程师当时没有考虑全面,设计数据库表结构有点问题,当公司的数据达到几十万级别的时候,该网站基本就跑不动了。原因是查询的时候没有使用索引,造成了大量的数据库慢查询,服务器同时存在许多php-fpm进程运行。几乎耗尽了服务器cpu和内存。

当定位到问题后,重新设计了表结构,给对应的几个字段加上了索引。加上索引之后,还是偶尔会出现cpu、内存快耗尽的情况。对于这种情况,我编写了一个shell脚本,用来监控服务器内存的使用率,一旦达到预设值时,杀死所有的php-fpm进程,释放服务器的压力。

首先,我们要获取服务器的内存使用率。通过free可以获取总内存大小以及使用内存多少

# free 
              total        used        free      shared  buff/cache   available
Mem:        7999972     5432684      152496        2480     2414792     2284544
Swap:             0           0           0

我们需要的是Mem那行的,total以及used项。我们通过grep以及awk命令,可以获得当前系统的内存使用率。

free |grep -i mem | awk '{n=$3/$2; printf("%.0f", n * 100)}'

获得了内存使用率后,然后拿它和预设值作比较。当大于预设值时,就把系统中所以php-fpm进程杀死。那么接下来的工作就是如何找出系统中所有php-fpm进程,以及如何去杀死这些进程。

想要获取系统所有的php-fpm进程,可以使用ps命令,然后结合grep过滤即可。

ps aux | grep php-fpm | grep -v grep | grep -v master
www      21210  0.0  0.1 157852  8596 ?        S    19:33   0:00 php-fpm: pool www
www      21211  0.0  0.1 157852  8596 ?        S    19:33   0:00 php-fpm: pool www
……

通过上面的命令获取到了所有php-fpm进程,然后我们遍历这些信息,通过kill 进程号,来杀死php-fpm进程。

下面给出完整的shell脚本程序:

#!/bin/bash
# 内存检查,超过70%,杀死所有php-fpm进程
MEM_LIM=70

used=$(free | grep -i mem | awk '{n=$3/$2;printf("%.0f", n*100)}')

if ((used > MEM_LIM));then
    pids=`ps aux | grep php-fpm | grep -v grep | grep -v master | awk '{print $2}'`
    for pid in $pids
    do
       kill -9 $pid
    done
fi

上述的脚本是非常简单了,清晰命令。下面总结下该脚本程序使用了哪些知识点:

free命令获取内存使用率

ps命令获取所有php-fpm进程

kill命令杀死进程

shell编程条件分支以及循环结构

看完了这篇文章,相信你对如何使用内存检查超过设定值杀死php-fpm进程有了一定的了解,想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!

标题名称:如何使用内存检查超过设定值杀死php-fpm进程
网页地址:https://www.cdcxhl.com/article14/cpddde.html

成都网站建设公司_创新互联,为您提供网站导航网站建设企业网站制作营销型网站建设移动网站建设网站改版

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

h5响应式网站建设