Loading... # 惊 服务器今天突然给我发了个告警通知,说是负载过大。 而我记得设置的规则是负载要大于90%并且维持5分钟才会将通知发过来,也就是说,服务器至少可能已经宕机5分钟了....而我刚好在回去的路上。只能回去好好排查了。  然后发现原来在昨天,也就是1号也告警过一次,但是我并没有注意到...好在那天只是维持了一会就好了  这个是今天的,而今天的就严重了很多。就在我回去之后没多久,mysql、nginx服务的停止服务告警接踵而至,下面是告警的通知,我勒个大唐盛世  # 排查 按道理来说,我这几个小破站满打满算也就几千用户,那么久没维护,猜测也就1k左右的活跃量,不至于有人盯上我了吧。可是那么多的 `php-fpm`进程又是怎么回事,难道是优化不到位吗... 首先我想着先去vnc把面板服务重启了,看看会不会好一点(当然肯定不能随便停的,但是我这情况,无所谓啦) 刚连上vnc就给我弹了几个oom,大致就是 `php-fpm`占用过大导致的回收,途中还看到了 `nginx`和 `mysqld`的影子,这里我就没截图(谁好人出事还截图留念啊) # 优化 我直接就是登录面板把php服务都给停掉了,果然好了很多,但是负载还是存在的,不会马上降下来。 然后我就去将 `max_execution_time`的值往下调整,原本的300我调整为20,并发方案我选择了1gb的,然后就是把 `min_spare_servers`和 `max_spare_servers`的值也适量调低,情况好多了,然后停止,重启,负载也慢慢下来了。 # 回收 最后找了个shell脚本对php服务定时进行内存回收,以防后面再出什么幺蛾子,也不是什么机密,官方就有,这里再贴出来好了 ```shell if [ -f /etc/init.d/php-fpm-52 ];then service php-fpm-52 reload fi if [ -f /etc/init.d/php-fpm-53 ];then service php-fpm-53 reload fi if [ -f /etc/init.d/php-fpm-54 ];then service php-fpm-54 reload fi if [ -f /etc/init.d/php-fpm-55 ];then service php-fpm-55 reload fi if [ -f /etc/init.d/php-fpm-56 ];then service php-fpm-56 reload fi if [ -f /etc/init.d/php-fpm-70 ];then service php-fpm-70 reload fi myDate=`date +"%Y-%m-%d %H:%M:$S"` echo "★[$myDate] PHP内存回收成功!" echo '------------------------------------------------------------------------------'; ```  后面再观察下还会不会出现问题,这次的问题就暂时性解决了~ 然后顺便来水个博客哈哈哈哈 Last modification:October 20, 2024 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的文章对你有用,请随意赞赏