数栈运维案例:客户生产服务器CPU负载异常处理
本文整理自:袋鼠云技术荟 | 某客户生产服务器CPU负载异常处理
一、问题背景
一天下午,大家都在忙着各自的事情,突然小组人员都同时收到了短信提醒,以为是公司发奖金了,很是开心,咋一看“某某客户服务器cpu使用率100%,请及时处理!”原来是告警短信,同时看到钉钉群里发出了大量的告警信息……
二、故障回顾
告警提示”CPU使用率到达98%” ,打开阿里云控制台,通过云监控发现在下午15:06-16:46左右,云上机器某四台集群服务器cpu使用率波动较大(先降后升),负载过高,网络流量达到一定峰值就出现下降趋势,TCP连接数先是出现下降趋势,后面出现上升状态。现象如下图:

CPU先降后升使用率情况:使用率接近100%

系统平均负载先升后降情况:load超过40

网络流入流量:网络带宽流入流出先降后升

TCP 连接数情况:先升后降
三、问题排查过程
1) nginx 日志排查
查看nginx15:06-16:46时间段的日志发现请求订单接口响应时间较长,超过30s。如下图:

2) 查看fpm-php日志
查看fpm-php日志,在15:06-16:46这个时间段中,fpm-php子进程出现大量重启,如下图:

同时,nginx错误日志中发现较多的502,504状态码,如下图:
Nginx 502 状态码:

Nginx 504 状态码:

3) 问题定位分析
a. 从fpm-php对应的日志里发现大量的fpm-php子进程重启,原因是每个子进程接受的请求数达到设定值。
b. 在大量的fpm-php子进程重启过程中,如果有大量请求进来是无法响应的,所以Nginx收到大量的502、504报错。
c. 同时在大量的fpm-php重启时会消耗大量的CPU load, PHP不接受业务请求、不转发数据,服务器流量直线下降。
4) 处理结论
经过上述分析,最终定位确认是fpm-php子进程数配置太低,同时每个子进程接受的请求数max_requests设置太小。无法应对每天的流量高峰。
四、优化建议
根据服务器的CPU/内存配置,适当增加children的数量和max_requests的请求数。如下图,设置一个比较大的值。

五、优化效果
1)增加fpm-php子进程数以及每个子进程接收的请求能减少php子进程大量重启频次;
2)可缓解业务高峰期对服务造成的压力,降低业务影响。
六、写在最后
基于互联网在线化方式,袋鼠云为客户提供云上网络和资源规划、应用架构规划、性能优化、监控告警、系统健康检查、业务大促护航、云上安全运营等全方位的专业运维服务,保障客户业务系统在云上稳定运行。
数栈是云原生—站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变化的数据,是全域、异构、批流一体的数据同步引擎。大家喜欢的话请给我们点个star!star!star!
github开源项目:https://github.com/DTStack/flinkx
gitee开源项目:https://gitee.com/dtstack_dev_0/flinkx
数栈运维案例:客户生产服务器CPU负载异常处理的更多相关文章
- 数栈运维实例:Oracle数据库运维场景下,智能运维如何落地生根?
从马车到汽车是为了提升运输效率,而随着时代的发展,如今我们又希望用自动驾驶把驾驶员从开车这项体力劳动中解放出来,增加运行效率,同时也可减少交通事故发生率,这也是企业对于智能运维的诉求. 从人工运维到自 ...
- 运维案例 | Exchange2010数据库损坏的紧急修复思路
关注嘉为科技,获取运维新知 Exchange后端数据库故障,一般都会是比较严重的紧急故障,因为这会直接影响到大面积用户的正常使用,而且涉及到用户数据.一旦遇到这种级别的故障,管理员往往都是在非常紧 ...
- 企业IT运维以及信息管理部服务器管理
方法 1.服务器有必要保持简洁.除了必要的应用软件以及安全软件之外,尽量不要安全其它的软件. 2.要做好服务器帐号权利规划和分配,分配够用的权利就行,从而降低密码泄漏带来的损失. 3.注意关注服务器软 ...
- Linux运维一:生产环境CentOS6.6系统的安装
CentOS 6.6 x86_64官方正式版系统(64位)下载地址 系统之家:http://www.xitongzhijia.net/linux/201412/33603.html 百度网盘:http ...
- Linux运维常用命令-linux服务器代维常用到的维护命令
1.删除0字节文件find -type f -size 0 -exec rm -rf {} ; 2.查看进程按内存从大到小排列ps -e -o "%C : %p : %z : %a& ...
- 【数仓运维实践】关于GaussDB(DWS)单SQL磁盘空间管控
摘要:本文主要讲解数仓运维中遇到单SQL磁盘空间管控问题的解析和方案. 本文分享自华为云社区<GaussDB(DWS)运维 -- 单SQL磁盘空间管控>,作者: 譡里个檔. [问题描述] ...
- 数栈SQL优化案例:隐式转换
MySQL是当下最流行的关系型数据库之一,互联网高速发展的今天,MySQL数据库在电商.金融等诸多行业的生产系统中被广泛使用. 在实际的开发运维过程中,想必大家也常常会碰到慢SQL的困扰.一条性能不好 ...
- KingbaseES V8R3集群运维案例之---用户自定义表空间管理
案例说明: KingbaseES 数据库支持用户自定义表空间的创建,并建议表空间的文件存储路径配置到数据库的data目录之外.本案例复现了,当用户自定义表空间存储路径配置到data下时,出现的故障问 ...
- 运维笔记--线上服务器git环境配置
场景描述: 我们采用git去管理代码分支,本地开发环境,线上服务器多数情况下也会使用git去管理程序代码,那么新的一台服务器,如果指定了目标路径作为代码存放路径,该如何配置git环境, 以达到跟远程服 ...
- 转「服务器运维」如何解决服务器I/O过高的问题
问题缘起: 当我习惯性地用top查看任务运行状态时,发现我运行的100个任务,只有3个在运行,其他都在摸鱼状态.同时发现我的任务进程都是"D"状态(未截图),而不是R(运行)状态. ...
随机推荐
- 关于TFDMemtable的使用场景【2】处理SOAP/REST取得的数据
如果可以直接获得JSON数据,那么可以直接连到TFDMemtable进行显示和编辑. 1.一组REST组件.RESTClient的属性BaseURL是http地址. 2.点击TRESTRequest右 ...
- FireDAC开发DataSnap应用系统【1】-快储功能
FireDAC是吧DataSnap服务器当成API来调用,而dbExpress使用IAppServer接口. 关键点: 1.客户端调用API要回传数据,那么FireDAC把数据已Stream的格式传递 ...
- 学习Kotlin语法(一)
简介 Kotlin是一种现代.简洁且功能强大的编程语言,特别适合Android开发.本文将从基础语法开始,逐步掌握Kotlin的核心特性. 目录 变量 基本类型 数字 无符号对应项 布尔值 字符和字符 ...
- python,获取当前日期且以当前日期为名称创建文件名
爬虫爬取信息时,需要把爬取的内容存到txt文档中,且爬虫是每天执行,以日期命名能避免出现名称重复等问题,解决方法如下 import time import os import sys path = o ...
- 备注一下,SolidColorBrush,自定义颜色
new SolidColorBrush((Color)ColorConverter.ConvertFromString("#27212B"))
- Windows系统常用端口详解
7,9,13,17,19 这是几个简单的TCP/IP服务,在windows中被Simple TCP/IP Services管理. 7 : Echo 服务:将接收到的数据原样返回. 9 : Discar ...
- 代码随想录第十三天 | Leecode 144. 二叉树的前序遍历、 94. 二叉树的中序遍历、 145. 二叉树的后序遍历
Leecode 144. 二叉树的前序遍历 题目链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/ 题目描述 给你二叉树的根 ...
- 【记录】SMB|Windows下修改SMB端口并挂载
环境:Window11 使用背景:勒索病毒导致445端口不安全,故而该端口在服务器端被全面禁用了,如需使用SMB服务需要换个SMB服务端口. 方法1:端口转发 win+x点开管理员权限的终端: 输入如 ...
- 【MOOC】华中科技大学操作系统慕课答案-第1~3章单元测试
单选 1 下列说法错误的是 . A. 手工操作阶段,资源利用率低的原因是因为程序的准备和撤销都需要手工完成. B. 单道批处理系统中CPU和外设交替工作和空闲. √C. 单道批处理系统效率之所以比手工 ...
- 21C++数组(2)
一.字符数组的输入与输出 (第65课 采访报道) 教学视频 大惊小怪报和小惊大怪报是两家全球性的报社,发表的文章全用英文.因风之巅小学的信息学社团开展得很出色,于是两家报社都派记者前来采访,大 ...