阿里云ESC服务器CPU一直处于100%该如何排查?

news2025/1/23 4:42:50

阿里云ESC服务器CPU一直处于100%该如何排查?

问题背景

使用 docker 容器化部署整个项目,然后服务器的CPU一直处于100%,此时就出现了问题:此时如果重新开启一个窗口去连接,或者访问宝塔面板、Navicat连接MySQL就连接不上了,问题很严重

image-20230819135127639

问题分析

  • 服务器CPU飙升至100%常见原因

    • 程序或应用负载过重:如果你在服务器上运行的程序或应用负载很重,会导致CPU使用率飙升。这可能是因为程序设计不合理、代码有bug、数据库查询频繁等原因导致的。
    • 访问量激增:如果你的网站或服务突然遭受大量访问,服务器会面临巨大的压力,导致CPU使用率飙升。这可能是由于广告宣传、流量攻击或媒体报道等原因引起的。
    • 恶意软件或病毒感染:如果服务器中存在恶意软件或病毒,它们可能会消耗大量的CPU资源。这些恶意软件可以通过漏洞利用、下载非法软件、点击恶意链接等方式进入服务器。
    • 资源不足:如果服务器配置不足,例如内存不足或硬盘IO性能较差,会导致CPU负载过高。这种情况下,服务器无法及时处理任务,从而导致CPU使用率飙升。
    • 崩溃或错误日志:服务器出现崩溃或错误可能会导致CPU使用率飙升。你可以检查服务器的日志文件,查找错误信息以确定问题所在。
  • 如何排查

    这里提供一下我的排查思路吧,主要分为两种情况,恰巧这两种情况我都遇到了🤣

    • 方案一:针对CPU100%,同时能够正常执行指令的

      1. 定位凶手。使用top -c 查看CPU 占用情况 ,按P(大写)可以倒序查看占CPU占用率
      2. 分析原因。针对CPU超高的,如果这个进程我们明确知道,它并不是一个特别重要的进程,我们可以先直接通过kill -9 pid 杀死它,然后仔细 程序是否存在问题,比如死循环,循环依赖等等问题;如果是一个很重要的进程,我们可以通过jstack -l pid > pid.stack 将这个进程的堆栈信息重定向到pid.stack ,然后将这个进程对应的 tid 转换为16进制数(这个转换我们可以直接搜索在线进制转换即可,网上一大把),最后cat pid.stack | grep '16tid' -C 20查看该线程打印出来的堆栈信息

      备注:pid是进程id,tid是线程id,16tid是tid转成16进制后的结果,注意区分,jvm的进程快照中线程显示是16进制的所以需要转成16进制

      上面那个方法是比较通用且常见的方法, 而我之前遇到过因为启动Nacos容器出现CPU飙升100%(感兴趣的可以参考这篇文章:Docker运行Nacos容器,过一会就报错UnsatisfiedDependencyException_知识汲取者的博客-CSDN博客),我是直接通过docker logs --tail 500 nacos查看日志,然后发现是 堆内存不够导致的,最终通过配置 jvm 堆内存参数,最终成功启动 nacos

    • 方案二:针对CPU100%,但是不能够正常执行指令的,也就是窗口直接卡的动都不动了

      这种情况没有其它办法,只能通过重启服务器了

      恰巧我也遇到过,之前在使用docker build -t 指令为三个后端 jar 包构建程一个容器的过程中,一下启动导致CPU直接飙升100%结果终端页面卡的动都动不了了,重启服务器后,我经过不断排查,最终定位到是由于我的服务器内存太小了,由于我有之前 Nacos 的bug解决经验了,所以这一次我就直接给每一个 jar 包的启动过程中都限制最大堆内存,最终就成功解决了

PS:相信过不了多久,我这段时间的项目就要上线了,到时候应该还会发一篇文章用于介绍我的新项目,尽情期待吧(●’◡’●)

参考文章

  • 排查Linux实例CPU资源使用率高达100%的异常问题-阿里云帮助中心 (aliyun.com)
  • 【CPU100%排查】CPU100%问题排查方案 - 听风是雨 - 博客园 (cnblogs.com)
  • 论线上如何排查一次CPU100%的情况 - 知乎 (zhihu.com)

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

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

相关文章

使用redis+lua通过原子减解决超卖问题【示例】

文章目录 前言一、准备工作二、不使用Lua三、使用Lua 前言 超卖,即在并发的情况下,所售商品数量大于商品的库存数量。在并发量大的情况下,用户请求同时到达,对数据库进行操作,在没有采取相应的处理的情况时从而导致出…

第八章 Linux实际操作——定时任务调度

第八章 Linux实际操作——定时任务调度 8.1 crond任务调度8.1.1 概述8.1.2 基本语法8.1.3 常用选项8.1.4 快速入门8.1.5 应用实例8.1.6 crond相关指令 8.2 at定时任务8.2.1基本介绍8.2.2 at命令格式8.2.3 at命令选项8.2.4 at时间定义8.2.5 应用实例 8.1 crond任务调度 crontab…

Vulnhub系列靶机---HarryPotter-Nagini-哈利波特系列靶机-2

文章目录 信息收集主机发现端口扫描gobuster目录扫描dirsearch扫描joomscan扫描实现http3访问 漏洞利用Gopherus工具GetShell提权firefox_decrypt工具 总结 靶机文档:HarryPotter: Nagini 下载地址:Download (Mirror) 信息收集 主机发现 端口扫描 访问8…

生成克隆钓鱼网站与对win7进行后渗透操作

目录 目录 前言 系列文章列表 思维导图 1,实验涉及复现环境 2,CS的介绍 2.1,CS的简介 2.2,CS的主要功能 3,CS的安装 3.1,将cobalt_strike_4.5文件夹放到kali中 3.1,放入过程中的注意事项 3.2,如图所示 4,配置工具 4.1,进入c…

Kafka3.0.0版本——消费者(Sticky分区分配策略以及再平衡)

目录 一、Sticky分区分配策略原理二、Sticky分区分配策略 示例需求三、Sticky分区分配策略代码案例3.1、创建带有7个分区的sevenTopic主题3.2、创建三个消费者 组成 消费者组3.3、创建生产者3.4、测试3.5、Sticky分区分配策略代码案例说明 四、Sticky分区分配再平衡案例4.1、停…

机器人抓取检测技术的研究现状

1.分析法 图 1 为分析法在进行抓取检测时所采用的 一般策略[3] [3]Sahbani A, El-Khoury S, Bidaud P. An overview of 3D object grasp synthesis algorithms[J]. Robotics and Autonomous Systems, 2012, 60(3): 326-336. 首先,基于环境限制和机械手与物体模 型进行抓取检…

算法宝典——Java版本(持续更新)

目录 一、链表的算法题(目前9道) 1. 移除链表元素(思路:前后指针) 2. 反转一个单链表 (思路:头插法) 3. 链表的中间结点(思路:快慢指针) 4. 链…

衷心祝福“好教师”节日快乐

在2023年教师节的今天,本“人民体验官”推广人民日报官方微博文化产品《张桂梅说教师这个职业有苦有幸福》。 图:来源“人民体验官”推广平台 人民微博简述道:“今天,张桂梅祝全国老师们节日快乐。” 张桂梅说:“教师…

图像的几何变换(缩放、平移、旋转)

图像的几何变换 学习目标 掌握图像的缩放、平移、旋转等了解数字图像的仿射变换和透射变换 1 图像的缩放 缩放是对图像的大小进行调整,即 使图像放大或缩小 cv2.resize(src,dsize,fx0,fy0,interpolationcv2.INTER_LINEAR) 参数: src :输入图像dsize…

机构企业学员培训知识付费小程序开源版开发

机构企业学员培训知识付费小程序开源版开发 用户注册与登录:提供用户注册和登录功能,以便用户能够访问和使用小程序。个人信息管理:允许用户管理个人资料,包括修改个人信息和上传个人头像。课程浏览:提供课程列表&…

[技术讨论]讨论问题的两个基本原则——17年前的文字仍然有效

前两天又有人找我讨论问题,而且是他自己的项目,内容与我没有任何关系,他说的,却是讨论。 其实就是想来做咨询,又不想付费。 今天看到了十七年前写的这篇文字,就重发一下了,当然有少量文字修订&a…

【Java并发】聊聊ReentrantReadWriteLock锁降级和StampedLock邮戳锁

面试题 1.你说你用过读写锁,锁饥饿问题是什么? 2.有没有比读写锁更快的锁? 3.StampedLock知道吗?(邮戳锁/票据锁) 4.ReentrantReadWriteLock有锁降级机制策略你知道吗? 在并发编程领域,有多线程进行提升整体性能&…

c++ - 抽象类 和 多态当中一些问题

抽象类 纯虚函数 在虚函数的后面写上 0 ,则这个函数为纯虚函数。 class A { public:virtual void func() 0; }; 纯虚函数不需要写函数的定义,他有类似声明一样的结构。 抽象类概念 我们把具有纯虚函数的类,叫做抽象类。 所谓抽象就是&a…

124个Python案例,完整源代码!

大家好,我是涛哥。 很多小伙伴为了掌握爬虫这门技术,投入了大量的时间和精力。他们在深夜里独自码字,他们在周末的时候熟读代码, 但独自学习,没有朋友的陪伴和指导,学习的过程就像是在一条无尽的道路上徘…

【多线程】wait 、notify 和 notifyAll 讲解

wait 、notify 和 notifyAll 讲解 一. wait二. wait 和 sleep 的对比三. notify四. notifyAll五. notify 与 notifyAll 的原理 由于线程之间是抢占式执行的, 因此线程之间执行的先后顺序难以预知. 但是实际开发中有时候我们希望合理的协调多个线程之间的执行先后顺序. 完成这个…

军队状态出现的六种结果,是将帅的过失

军队状态会出现六种坏结果,是将帅的过失 【安志强趣讲《孙子兵法》第35讲】 【原文】 故兵有走者,有弛者,有陷者,有崩者,有乱者,有北者。凡此六者,非天之灾,将之过也。 【趣讲白话】…

【代码分析】初学解惑C++:函数适配器

文章目录 前置知识 运算符的重载“()”一、函数适配器是什么?由遇到的问题引出适配器模式类模式对象模式例1例2例3例4二、实现函数适配器1.定义函数2.定义函数适配器3.使用函数适配器 三、带模板的函数适配器1、自定义unary_function2、改写带…

alibaba按关键字搜索商品 API

为了进行电商平台 的API开发,首先我们需要做下面几件事情。 1)开发者注册一个账号 2)然后为每个alibaba应用注册一个应用程序键(App Key) 。 3)下载alibaba API的SDK并掌握基本的API基础知识和调用 4)利…

vue3中,调接口,渲染数据

1. 封装接口文档 // src/apis/xxx.js中 // 1. 导入 封装的axios实例 import request from /utils/http // 2. 封装接口 --获取轮播图数据 export const getBannerAPI (params {})>{// 传默认参数->(传参 默认参数)const { distributionSite…

Reids的安装使用

Windows 版本的 Redis 是 Microsoft 的开源部门提供的 Redis. 这个版本的 Redis 适合开发人员学习使用,生产环境中使用 Linux 系统上的 Redis, 这里讲解了这两种的安装和下载。按照你们需要的liunx 或window步骤来 就可以了(也可以留言,后面看…