收到线上服务器出现cpu告警一般怎么排查?

news2025/2/24 22:11:14

当线上服务器出现CPU告警时,可以按照以下步骤进行系统性排查,逐步定位问题根源:


1. 快速确认CPU使用情况

  • 命令工具
    top                          # 实时查看CPU占用(按P排序进程)
    htop                         # 增强版top,支持可视化操作
    mpstat -P ALL 1              # 查看每个CPU核心的详细利用率
    sar -u 1 5                   # 历史CPU使用率统计(需安装sysstat)
    
  • 关注指标
    • %us(用户态)高:应用代码消耗CPU。
    • %sy(内核态)高:系统调用或中断频繁。
    • %wa(I/O等待):高则可能磁盘/网络IO成为瓶颈。

2. 定位高CPU进程/线程

  • 查看进程
    top -c                       # 显示完整命令,确认可疑进程
    ps -eo pid,pcpu,comm,args --sort=-%cpu | head  # 按CPU排序进程
    
  • 深入线程
    top -H -p <PID>              # 查看指定进程的线程(按P排序)
    pidstat -t -p <PID> 1        # 统计线程级CPU使用
    

3. 分析进程内部状态

  • Java应用

    jstack <PID> > thread_dump.log      # 生成线程快照
    jstat -gcutil <PID> 1000            # 检查GC情况(频繁GC可能导致CPU高)
    
    • 用工具(如fastthread)分析jstack输出,查找RUNNABLE状态的线程及堆栈。
  • 其他语言(如C/C++/Go)

    pstack <PID>                 # 查看进程的线程堆栈(可能需gdb)
    perf top -p <PID>            # 实时分析函数级CPU占用
    gdb -p <PID> -ex "thread apply all bt" --batch > gdb_dump.log  # 生成完整堆栈
    

4. 检查系统级瓶颈

  • I/O瓶颈

    iostat -x 1                  # 查看磁盘IO负载(%util高表示瓶颈)
    dstat                        # 综合监控(CPU、磁盘、网络)
    
  • 网络瓶颈

    sar -n DEV 1                 # 网络流量统计
    ss -s                        # 查看连接统计(TIME-WAIT过多?)
    
  • 上下文切换/中断

    vmstat 1                     # 查看cs(上下文切换)、in(中断)
    pidstat -w -p <PID> 1        # 进程级上下文切换统计
    

5. 结合日志与监控

  • 应用日志

    • 检查错误日志(如grep -i error /var/log/app/*.log)。
    • 关注高频日志输出(可能是循环报错或异常逻辑)。
  • 系统日志

    dmesg | grep -i "error"      # 检查内核日志
    journalctl --since "5 minutes ago"  # 查看近期系统日志(systemd系统)
    
  • 监控系统(如Prometheus、Zabbix):

    • 检查历史趋势:CPU升高是否伴随流量突增?
    • 关联指标:内存、磁盘、网络、应用中间件(如数据库连接池)。

6. 代码/配置级检查

  • 代码热点

    • 使用性能分析工具生成火焰图:
      perf record -F 99 -p <PID> -g -- sleep 30  # 采样
      perf script > out.perf
      flamegraph.pl out.perf > flamegraph.svg    # 生成火焰图
      
    • 分析火焰图,找到占用CPU高的函数或代码块。
  • 配置问题

    • 线程池配置不合理(过多/过少)。
    • 缓存失效导致频繁计算。
    • JVM参数不当(如堆大小、GC策略)。

7. 安全排查

  • 可疑进程
    lsof -p <PID>                # 查看进程打开的文件/网络
    netstat -antp | grep <PID>   # 检查异常连接
    
  • 挖矿病毒
    • 检查未知进程、计划任务(crontab -l)、启动项。
    • 使用rkhunterchkrootkit扫描后门。

8. 常见场景速查

  • 场景1:GC频繁
    现象jstat显示GC时间占比高,应用卡顿。
    解决:调整JVM堆大小/选择低延迟GC算法(如G1/CMS)。

  • 场景2:死循环/死锁
    现象:线程堆栈中同一方法反复出现。
    解决:分析代码逻辑,修复并发问题。

  • 场景3:外部依赖瓶颈
    现象:CPU高伴随大量I/O等待或网络超时。
    解决:优化数据库查询、增加缓存、降级非核心功能。


总结流程

  1. 确认问题 → 2. 定位进程 → 3. 分析线程 → 4. 关联日志/监控 → 5. 代码/系统调优
    通过工具链逐层下钻,结合系统指标与应用逻辑,最终定位到代码或配置缺陷。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2304581.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch Open Inference API 增加了对 Jina AI 嵌入和 Rerank 模型的支持

作者&#xff1a;Hemant Malik 及 Joan Fontanals Martnez 探索如何使用 Elasticsearch Open Inference API 访问 Jina AI 模型。 我们在 Jina AI 的朋友们将 Jina AI 的嵌入模型和重新排名产品的原生集成添加到 Elasticsearch 开放推理 API 中。这包括对行业领先的多语言文本嵌…

Unity学习part4

1、ui界面的基础使用 ui可以在2d和矩形工具界面下操作&#xff0c;更方便&#xff0c;画布与游戏窗口的比例一般默认相同 如图所示&#xff0c;图片在画布上显示的位置和在游戏窗口上显示的位置是相同的 渲染模式&#xff1a;屏幕空间--覆盖&#xff0c;指画布覆盖在游戏物体渲…

进程概念、PCB及进程查看

文章目录 一.进程的概念进程控制块&#xff08;PCB&#xff09; 二.进程查看通过指令查看进程通过proc目录查看进程的cwd和exe获取进程pid和ppid通过fork()创建子进程 一.进程的概念 进程是一个运行起来的程序&#xff0c;而程序是存放在磁盘的&#xff0c;cpu要想执行程序的指…

php session数据存储位置选择

PHP session 数据的存储位置可以通过配置文件或者代码来进行设置。默认情况下&#xff0c;session 数据是存储在服务器的文件系统中的。你可以将 session 数据存储在其他地方&#xff0c;例如数据库、缓存等。 基础概念 PHP session默认情况下将数据存储在服务器端的临时文件中…

计算机网络————(一)HTTP讲解

基础内容分类 从TCP/IP协议栈为依托&#xff0c;由上至下、从应用层到基础设施介绍协议。 1.应用层&#xff1a; HTTP/1.1 Websocket HTTP/2.0 2.应用层的安全基础设施 LTS/SSL 3.传输层 TCP 4.网络层及数据链路层 IP层和以太网 HTTP协议 网络页面形成基本 流程&#xff1a…

【Viewer.js】vue3封装图片查看器

效果图 需求 点击图片放大可关闭放大的 图片 下载 cnpm in viewerjs状态管理方法 stores/imgSeeStore.js import { defineStore } from pinia export const imgSeeStore defineStore(imgSeeStore, {state: () > ({showImgSee: false,ImgUrl: ,}),getters: {},actions: {…

数据结构之二叉树的定义及实现

1. 树的概念 主要的定义&#xff1a; 节点的度&#xff1a;一个节点含有的子树的个数称为该节点的度&#xff1b;如上图&#xff1a;A的为6 叶节点或终端节点&#xff1a;度为0的节点称为叶节点&#xff1b;如上图&#xff1a;B&#xff0c;C&#xff0c;H&#xff0c;I等节点…

Rust语言基础知识详解【一】

1.在windows上安装Rust Windows 上安装 Rust 需要有 C 环境&#xff0c;以下为安装的两种方式&#xff1a; 1. x86_64-pc-windows-msvc&#xff08;官方推荐&#xff09; 先安装 Microsoft C Build Tools&#xff0c;勾选安装 C 环境即可。安装时可自行修改缓存路径与安装路…

SQLMesh 系列教程9- 宏变量及内置宏变量

SQLMesh 的宏变量是一个强大的工具&#xff0c;能够显著提高 SQL 模型的动态化能力和可维护性。通过合理使用宏变量&#xff0c;可以实现动态时间范围、多环境配置、参数化查询等功能&#xff0c;从而简化数据模型的开发和维护流程。随着数据团队的规模扩大和业务复杂度的增加&…

【Deepseek】Linux 本地部署 Deepseek

前言 本文介绍在 Linux 系统上部署 Deepseek AI。本文教程是面向所有想体验 AI 玩家的一个简易教程&#xff0c;因此即使是小白也可以轻松完成体验&#xff0c;话不多说立马着手去干。 [注]&#xff1a;笔者使用的系统为 Ubuntu 24.10 1. 关于 ollama Ollama 是一款开源应用…

git,bash - 从一个远端git库只下载一个文件的方法

文章目录 git,bash - 从一个远端git库只下载一个文件的方法概述笔记写一个bash脚本来自动下载get_github_raw_file_from_url.shreanme_file.shfind_key_value.sh执行命令 END git,bash - 从一个远端git库只下载一个文件的方法 概述 github上有很多大佬上传了电子书库&#xf…

臻识相机,华夏相机,芊熠车牌识别相机加密解密

臻识&#xff0c;华夏&#xff0c;芊熠这三种车牌识别相机解密我都试过了&#xff0c;可以正常解密成功&#xff0c;其它品牌我暂时没有测试。超级简单&#xff0c;免费的&#xff0c;白嫖无敌&#xff01; 流程&#xff1a; ①&#xff1a;先导出配置文件&#xff0c;例如我以…

网络安全与措施

&#x1f345; 点击文末小卡片 &#xff0c;免费获取网络安全全套资料&#xff0c;资料在手&#xff0c;涨薪更快 # 网络安全问题概述 1) 数据安全 访问&#xff08;授权访问&#xff09;&#xff1b;存储&#xff08;容灾、备份或异地备份等&#xff09; 2) 应用程序 不能…

前后端分离系统架构:基于Spring Boot的最佳实践

前后端分离系统架构图描绘了一个基于Springboot的前端后台分离的系统架构。它强调了前端&#xff08;客户端&#xff09;与远程&#xff08;服务器&#xff09;的解耦&#xff0c;通过API接口进行交互&#xff0c;分别独立开发和部署。 前后端分离系统架构图 从上到下&#xff…

内外网文件传输 安全、可控、便捷的跨网数据传输方案

一、背景与痛点 在内外网隔离的企业网络环境中&#xff0c;员工与外部协作伙伴&#xff08;如钉钉用户&#xff09;的文件传输面临以下挑战&#xff1a; 安全性风险&#xff1a;内外网直连可能导致病毒传播、数据泄露。 操作繁琐&#xff1a;传统方式需频繁切换网络环境&…

抖音试水AI分身;腾讯 AI 战略调整架构;百度旗下小度官宣接入DeepSeek...|网易数智日报

抖音试水AI分身&#xff0c;字节旗下AI智能体平台扣子已与抖音打通&#xff0c;相关功能内测中 2月19日消息&#xff0c;钛媒体App独家获悉&#xff0c;字节旗下AI智能体开发平台扣子&#xff08;Coze&#xff09;已与抖音打通&#xff0c;抖音创作者可在扣子智能体平台打造AI分…

红帽7基于kickstart搭建PXE环境

Kickstart 文件是一种配置文件&#xff0c;用于定义 Linux 系统安装过程中的各种参数&#xff0c;如分区、网络配置、软件包选择等。system-config-kickstart 提供了一个图形界面&#xff0c;方便用户快速生成这些配置文件。 用户可以通过图形界面进行系统安装的详细配置&…

安装PHPStudy 并搭建DVWA靶场

目录 一、PHPStudy 简介 二、DVWA 简介 三、安装 PHPStudy 四&#xff1a;安装 DVWA 一、PHPStudy 简介 phpstudy傻瓜式的一键启动&#xff0c;支持WAMP、WNMP、LAMP、LNMP&#xff0c;一键切换环境&#xff08;nginxapahce&#xff09;,一键切换PHP版本&#xff08;5.1-7…

SQL写法技巧

目录 1.批量插入&#xff0c;查询&#xff0c;删除数据 缺点 实现方法 1.批量插入数据 2.批量查询数据 3.批量删除数据 4.批量修改数据 解释 2.树型表查询 方法一&#xff1a;递归(适用于多级的情况) 方法二&#xff1a;表的自连接 方法三&#xff1a;MySQL递归&am…

Ryu:轻量开源,开启 SDN 新程

1. Ryu 控制器概述 定位&#xff1a;轻量级、开源的SDN控制器&#xff0c;专为开发者和研究人员设计&#xff0c;基于Python实现。开发者&#xff1a;由日本NTT实验室主导开发&#xff0c;遵循Apache 2.0开源协议。核心理念&#xff1a;简化SDN应用开发&#xff0c;提供友好的…