百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>服务器> shell编程实战以内存检查超过设置值杀死php-fpm进程-linux运维
分享文章到:

shell编程实战以内存检查超过设置值杀死php-fpm进程-linux运维

发布时间:10/01 来源:未知 浏览: 关键词:
企业以前购置过一个源码,写这个源码的工程师当时没有考虑全面,设计数据库表构造有点题目,当企业的数据达到几十万级另外时候,该网站根本就跑不动了。 企业以前购置过一个源码,写这个源码的工程师当时没有考虑全面,设计数据库表构造有点题目,当企业的数据达到几十万级另外时候,该网站根本就跑不动了。缘由是查询的时候没有运用索引,造成了批量的数据库慢查询,办事器同时存在很多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编程前提分支以及轮回构造

以上就是shell编程实战以内存检查超过设置值杀死php-fpm进程的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有152人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板