这台服务器用了好几年了,阿里云轻量2h2g(没错,就是这样)。
先来给大家看看这次的服务器监控吧。
在之前的几个小时,大家也可以看到负载基本满载,处理之后舒服了。
先来说说具体的事故发生:
前景:
最近个人在做一款AI应用,其中支付服务我用的node express mongodb实现,部署到了这台服务器上(穷鬼只有这一台),正式因为我这台机子比较小,所以我选择以一种新的方式来做,类似边缘计算,把AI调用全部放到客户端进行实现,在调用的过程中进行扣费,扣费的过程通过公私钥加密传输(防止劫持 伪造攻击)。
事故发生
事情从8.5凌晨发生,当时醒来,服务器突然进不去了,但是服务器(阿里云)账号登录权限在同学那(我和同学之前就为了卡个学生优惠,我的号在大学之前就弄过了qwq),总不可能半夜把别人叫醒吧,中间好几次成功进去了,就直接开始排查(有时候又被卡退)。
事故分析
进入Shell直接top/ps一套,然后发现,怎么一大堆php进程占用很高。
这个图是解决之后的了,当时看的时候整整一页都是php-fpm,既然要解决问题,那么肯定是要找问题的引发原因。
所以我找了几分钟,发现了个问题。
在现在新的宝塔版本中,出了专门部署html项目的选项,在早期的时候,宝塔快速部署只支持php,所以我好几些html的静态页面,为了方便是直接部署到php的,所以这里我做了个迁移。
但是负载还是很高。
于是我把大多数的php全在界面上停止了,只留了博客和在开发的项目。
继续top也是一样的效果。
事故解决
所以我就一刀切
代码语言:bash复制killall -9 php-fpm # 或者pkill php-fpm
直接全部kill,然后手动重启php服务即可。
这是最近几日,可以看到回归正常,但是可以在图中看到,今天又出现了异常
这里出现异常应该适合我手动启动一个项目,并且进行install有关(安装的kodcloud),然后php-fpm启动子进程,但是这启动的有点多了吧。
既然启动的这么多,那么一定可以设置(没主动用过php进行开发,哈哈哈,对php的了解比较少,大多php开发都是基于原本的代码进行的二开)
来说说怎么设置吧,参考文章:https://cloud.tencent.com/developer/article/1796128
代码语言:bash复制vim /etc/php-fpm.d/www.conf
设置 pm.max_children 字段即可
对于宝塔的jrm,可以直接在面板里面修改
设置一下就行了。
除此之外,还推荐大家一个工具:htop,感兴趣的大家可以自行去了解一下。