03-----生产环境 CPU 占用过高,你如何解决?

2023-10-26

1. top指令

top	//找出占用 CPU 最高的进程的 pid。

2. 查看耗CPU的线程号

方法1:

top -Hp 进程号。然后按下大写P。//在该进程中找到,哪些线程占用的 CPU 最高的线程,记录下 tid。

注意下图一个是主线程,其余是子线程。
在这里插入图片描述

方法2:

ps -ef | grep 程序名 | grep -v grep	 //获取具体的进程信息,第二行和top的进程名不一样?一个是主线程一个是进程??但是都代表同一个东西啊
ps -mp 上面ef的进程id即第二列 -o THREAD,tid,time | sort -rn	//注:-m:显示所有线程;-p:pid进程使用CPU的时间;-o:该参数后是用户自定义格式

实际上下面我们已经看到那个线程占用的CPU高了。但是仍需要执行下面的内容,因为它可以打印相关堆栈的信息,从而精确定位到某个线程的对应的函数,这样就可以找到CPU占用高的代码了。
在这里插入图片描述

3. 重定向输出到文本

如果你是java,那么就使用java这种,否则下面一般就是C/C++了,二者选其一。它们都是查看程序相关堆栈的内容。

jstack -l > threads.txt			//java方法。导出进程的线程栈信息到文本,导出出现异常的话,加上 -F 参数。
//或者
pstack 进程号 > threads.txt		//C或者C++,由于我写这篇文章时,pstack这个命令没安装,不知道为啥没了,之前还能测试的,这里不管了,再次强调:不执行3,4步骤,无法查看具体的函数堆栈,第2步只能确定哪个线程,没啥用。

4.将 tid 转换为十六进制,在 threads.txt 中搜索,查到对应的线程代码执行栈,然后在自己代码中查找占 CPU 比较高的原因。

其中 tid 转十六进制,可以借助 Linux 的 printf ("%x",tid) 指令。或者百度在线进制转换。
我用上述方法查到过,是因为在某个线程不断while(1)。

下图是我之前自己查看CPU过高的图,定位到了具体函数的某一行。
在这里插入图片描述

到此结束,关于生产环境CPU过高的问题查找已经定位完毕,剩下来就是看你如何去解决你的代码了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

03-----生产环境 CPU 占用过高,你如何解决? 的相关文章

  • C修改printf()输出到文件

    有没有办法修改printf为了将字符串输出到文件而不是控制台 我尝试在互联网上查找一些内容 发现了类似的电话dup dup2 and fflush这可能与此有关 EDIT 也许我不清楚 问题是这是C考试问题 问题如下 解释一个通常将字符串输
  • WebClient读取错误页面的内容

    我有一个加载页面内容的应用程序 我使用 WebClient 类 即使服务器返回 404 500 等错误 我也需要检索内容 我需要这样的东西 WebClient wc new WebClient string pageContent try
  • C# 中的协变和逆变

    首先我要说的是 我是一名正在学习 C 编程的 Java 开发人员 因此 我会将我所知道的与我正在学习的进行比较 我已经使用 C 泛型几个小时了 我已经能够在 C 中重现我在 Java 中知道的相同内容 除了几个使用协变和逆变的示例 我正在读
  • 如何将pdf页面设置设置为打印属性对话框?

    大家好 我想知道如何设置 pdf 页面设置到打印属性对话框 例如 如果我的 PDF 页面设置为横向 则布局会自动显示横向而不是纵向 如果我的 PDF 页面设置为纵向 则布局会自动显示纵向 我在这个主题上做了很多研发 但没有找到任何满意的链接
  • 通过单个 GPIO 引脚转储闪存

    我正在使用 Infineon 的 XMC4500 Relax Kit 并尝试通过单个 GPIO 引脚提取固件 我非常天真的想法是通过 GPIO 引脚一次转储一位 然后用逻辑分析仪以某种方式 嗅探 数据 伪代码 while word by w
  • 在运行时设置 DataGridView 上的 DataFormatString?

    是否可以在运行时设置 ASP NET DataGridView 中的列或单元格的 DataFormatString 属性 这应该有效 BoundField priceField grid Columns 0 as BoundField pr
  • 如何在 Windows 窗体中运行屏幕保护程序作为其背景?

    如何在 Windows 窗体中运行屏幕保护程序作为其背景 用户还可以在屏幕保护程序运行时与表单控件进行交互 为什么这个 我们有一个案例 需要在用户时运行 Windows Bubbles 屏幕保护程序 可以继续与表单控件交互吗 您可以使用以下
  • c# 如何生成锦标赛括号 HTML 表

    所以我已经被这个问题困扰了三个星期 但我一生都无法弄清楚 我想做的是使用表格获得这种输出 演示 http www esl world net masters season6 hanover sc2 playoffs rankings htt
  • 不要声明只读可变引用类型 - 为什么不呢?

    我一直在阅读这个问题 https stackoverflow com questions 2274412 immutable readonly reference types fxcop violation do not declare r
  • `cosf`、`sinf` 等不在 `std` 中 [重复]

    这个问题在这里已经有答案了 根据这里的讨论 我有报告了一个错误 https bugs launchpad net ubuntu source gcc 8 bug 1831385给 Ubuntu 开发者 编译以下示例 C 程序时 includ
  • realloc():重新分配为 char * 上的 strcat 腾出空间时下一个大小无效 [重复]

    这个问题在这里已经有答案了 我在以下代码中收到无效内存错误 printf s n FINE 5 printf s LENGTH IS d n FINE 6 strlen buffer char realloc buffer strlen b
  • 无法通过 LINQ to Entities 使用某些功能?

    我正在尝试使用 LINQ 查询在项目上实现搜索功能 由于数据有时包含带有重音符号和其他符号的字符 因此我创建了一种方法来删除这些字符以进行搜索 这是我的代码 var addresses from a in db Addresses join
  • 如何在 *nix 中登录时运行脚本?

    我知道我曾经知道如何做到这一点 但是 如何在 unix 中登录时运行脚本 bash 可以 From 维基百科 Bash http en wikipedia org wiki Bash 28Unix shell 29 当 Bash 启动时 它
  • 展开路径中具有环境变量的文件名

    最好的扩张方式是什么 MyPath filename txt to home user filename txt or MyPath filename txt to c Documents and settings user filenam
  • 为什么C语言中可以使用多个分号?

    在 C 中我可以执行以下操作 int main printf HELLO WORLD 它有效 这是为什么 我个人的想法 分号是一个 NO OPERATION 来自维基百科 指示符 拥有一大串分号与拥有一个分号并告诉 C 语句已结束具有相同的
  • 是否有任何不使用公共虚拟方法的正当理由? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 是否有任何不使用公共虚拟方法的正当理由 我在某处读到我们应该避免使用公共虚拟方法 但我想向专家确认这是否是有效的声明 对于良好且稳定的 API
  • 通过 cmake 链接作为外部项目包含的 opencv 库[重复]

    这个问题在这里已经有答案了 我对 cmake 比较陌生 经过几天的努力无法弄清楚以下事情 我有一个依赖于 opencv 的项目 它本身就是一个 cmake 项目 我想静态链接 opencv 库 我正在做的是我的项目中有一份 opencv 源
  • 创建带有部分的选项卡式侧边栏 WPF

    我正在尝试创建一个带有部分的选项卡式侧边栏 如 WPF 中的以下内容 我考虑过几种方法 但是有没有更简单 更优雅的方法呢 方法一 列表框 Using a ListBox并将 SelectedItem 绑定到右侧内容控件所绑定的值 为了区分标
  • 如何从函数返回矩阵(二维数组)? (C)

    我创建了一个生成宾果板的函数 我想返回宾果板 正如我没想到的那样 它不起作用 这是函数 int generateBoard int board N M i j fillNum Boolean exists True initilize se
  • 如何确定给定方法可以抛出哪些异常?

    我的问题和这个真的一样 找出 C 中方法可能抛出的异常 https stackoverflow com questions 264747 finding out what exceptions a method might throw in

随机推荐

  • 流媒体压力测试工具—推拉流

    目录 前言 介绍 St load 安装篇 推流篇 拉流篇 前言 流媒体压力测试是评估流媒体系统性能和稳定性的重要环节 它可以模拟大量用户同时推送和拉取流媒体数据 以验证系统在高负载情况下的表现 为了进行流媒体压力测试 我们可以使用推拉流工具
  • DN值、辐射率、反射率等

    数字量化值 Digital Number DN 像素值的通用术语是数字量化值或DN值 它通常被用来描述还没有校准到具有意义单位的像素值 如果你只是想看一个图像 和不打算解释像素值的物理意义 那么就可以以DN值的方式来保存 辐射率 Radia
  • 极智AI

    欢迎关注我的公众号 极智视界 获取我的更多笔记分享 大家好 我是极智视界 本文讲解一下 C 手写 softmax 激活函数 在多分类任务中 最后通常使用 softmax 函数作为网络输出层的激活函数 softmax 函数可以对输出值作归一化
  • 互联网络安全、信息安全、计算机网络安全、信息保障有什么区别?

    据CNBC报道 由于黑客 安全漏洞和恶意软件攻击继续成为行业媒体报道的头条新闻 网络犯罪已成为一种全球 流行病 去年对全球组织和人员造成的损失约6000亿美元 因此 打击此类活动已成为一项有利可图且有益的事业 这并不奇怪 所以 如果你正在考
  • 【力扣】1337.矩阵中战斗力最弱的k行

    给你一个大小为 m n 的矩阵 mat 矩阵由若干军人和平民组成 分别用 1 和 0 表示 请你返回矩阵中战斗力最弱的 k 行的索引 按从最弱到最强排序 如果第 i 行的军人数量少于第 j 行 或者两行军人数量相同但 i 小于 j 那么我们
  • Spring中ApplicationContext加载机制

    加载器目前有两种选择 ContextLoaderListener和ContextLoaderServlet 只是一个是基于Servlet2 3版本中新引入的Listener接口实现 而另一个基于Servlet接口实现 开发中可根据目标Web
  • 【网站汇总】一些OJ平台

    目录 前言 一 HDU孵化器 二 HDU OJ 三 PTA 四 洛谷 五 力扣 LeetCode 前言 以下是一些OJ平台 一 HDU孵化器 链接 http hdufhq cn 8888 二 HDU OJ 链接 http code hdu
  • Linux下删除正在写入的文件会发生什么?

    一 成功 删除 了一个正在写入的文件 某日 我启动了一个进程 向一个文件a txt中写入内容 但不小心在另一个窗口用命令rm f a txt把它删除了 我以为这应该会触发一个警告 比如 不能删除一个打开的正在写入的文件 之类的 结果命令干脆
  • WinServer 2012 AD 组策略 用户发布软件部署

    本例演示安装 Notepad 这款软件 因为域中发布软件只支持 msi 格式 所以要把 exe 转成 msi 格式 可以用这个软件 https www advancedinstaller com 1 转换格式 1 选择 MSI from E
  • 数学建模 - 数学规划

    来自清风的数学建模课程 主要是用于自己复习看 所以截图较多 数学规划 概述 分类 线性规划 非线性规划 整数规划 0 1规划 线性规划 对于求解最大值要让目标函数的系数 max z min z 线性规划公式 x fval linprog c
  • 第十四届蓝桥杯模拟赛(第一期)——C语言版

    1 二进制位数 问题描述 十进制整数 2 在十进制中是 1 位数 在二进制中对应 10 是 2 位数 十进制整数 22 在十进制中是 2 位数 在二进制中对应 10110 是 5 位数 请问十进制整数 2022 在二进制中是几位数 incl
  • PHP导出excel文件的几种方式

    先说说动态生成的内容当作文件来下载的方法 1 通过把Content Type设置为application octet stream 可以把动态生成的内容当作文件来下载 content type内容设置可以参看 http www ostool
  • 父类对象的属性直接赋值给子类对象(使用copyProperties中的方法copyProperties)

    BeanUtils copyProperties 是 Apache Commons BeanUtils 包中提供的一个方法 用于将一个 JavaBean 对象的属性值赋值到另一个 JavaBean 对象中 该方法可以简化 JavaBean
  • springmvc @ResponseBody参数解析核心代码分析 -8

    org springframework web servlet mvc method annotation RequestResponseBodyMethodProcessor supportsParameter 只要参数上有 Reques
  • BAPI_ACC_DOCUMENT_POST用法

    文章目录 1 Overall 2 Code 1 Overall The blog will demostrate how to use BAPI ACC DOCUMENT POST We use enhancement for it 2 C
  • 所有子集 剑指 Offer II 079

    我只是喜欢敲代码 目录 题目描述 AC代码 思路分析 题目描述 给定一个整数数组 nums 数组中的元素 互不相同 返回该数组所有可能的子集 幂集 解集 不能 包含重复的子集 你可以按 任意顺序 返回解集 示例 1 输入 nums 1 2
  • springboot多数据源配置

    之前在介绍使用JdbcTemplate和Spring data jpa时 都使用了单数据源 在单数据源的情况下 Spring Boot的配置非常简单 只需要在application properties文件中配置连接参数即可 但是往往随着业
  • Angular_构建&部署&多环境

    构建 构建 编译和合并 部署 与服务器整合 ng build 使用命令ng build进行构建 构建完成以后 会在项目中多出一个dist文件夹 部署 在服务器端新建一个文件夹client 将dist文件夹中的文件复制粘贴到cleint文件夹
  • TCP选项之SO_RCVBUF和SO_SNDBUF

    SO RCVBUF SO SNDBUF 先明确一个概念 每个TCP socket在内核中都有一个发送缓冲区和一个接收缓冲区 TCP的全双工的工作模式以及TCP的滑动窗口便是依赖于这两个独立的buffer以及此buffer的填充状态 接收缓冲
  • 03-----生产环境 CPU 占用过高,你如何解决?

    1 top指令 top 找出占用 CPU 最高的进程的 pid 2 查看耗CPU的线程号 方法1 top Hp 进程号 然后按下大写P 在该进程中找到 哪些线程占用的 CPU 最高的线程 记录下 tid 注意下图一个是主线程 其余是子线程