Linux 线程占用CPU过高定位分析
今天朋友问我一个Linux程序CPU占用涨停了,该如何分析,
CPU占用过高,模拟CPU占用过高的情况
先上一段代码:
1 #include <iostream> 2 #include <thread> 3 #include <vector> 4 5 6 int main(int argc, char **argv) { 7 8 std::vector<std::thread> test_threads; 9 for(int i = 0; i < 9; i++){ 10 test_threads.push_back(std::thread([]{ 11 while(1){ 12 std::this_thread::sleep_for(std::chrono::milliseconds(500)); 13 } 14 })); 15 } 16 test_threads.push_back(std::thread([]{ 17 while(1){ 18 std::cout<<"cpu"<<std::endl; 19 } 20 })); 21 22 for(auto &x : test_threads){ 23 x.join(); 24 } 25 26 return 0; 27 }
第10个线程中没有进行睡眠,会独占进程的时间片,导致CPU利用率过高,
现在就要定位到第10个
第一步:top 查看程序进程id
第二步:top -H -p 96263 定位CPU占用过高的线程id
第三步:使用pstack 96263或者strace -f -p 96263 定位线程堆栈
strace -f -p 96263
转载于:https://www.cnblogs.com/Forever-Kenlen-Ja/p/8618102.html
Linux 线程占用CPU过高定位分析相关推荐
- Windows服务器java.exe占用CPU过高问题分析及解决
原文路径:https://blog.csdn.net/ningzuobei/article/details/48828915 最近在测试一个用java语言实现的数据采集接口时发现,接口一旦运行起来,C ...
- 41、java应用占用cpu过高原因分析
线上服务器cpu占用过高问题排查 1.定位最耗cpu的进程 命令:top 2.定位最耗cpu的线程 命令:Top –Hp PID 例如:Top –Hp 12086 3.打印线程堆栈信息 命令:Prin ...
- 与服务器竟然打架!java系统线程占用CPU过高问题,到底怎么办?
1.下载Windows系统和应用程序监视工具Process Explorer https://download.sysinternals.com/files/ProcessExplorer.zip[建 ...
- Linux kworker 占用CPU过高
先打开HTOP htop 然后按H K(大写) 我们看到Kworker/0:0+events占用了大量CPU,下面参考下人家的回答 什么是kworker? kworker表示进行"工作&qu ...
- window 查找 java 进程中占用cpu比较高的线程
概述 公司内部的一个产品 (java 开发的) 运行在 window 虚拟机上,运行一段时间后CPU飙升,然后想查看是哪个线程占用. 折腾了一下午,终于定位到该线程. 下面我们通过两种方式定位到占用c ...
- JVM占用CPU过高或者线程卡死定位
新项目上线初期经常会遇到CPU过高或者线程卡死问题,这虽然是两类性能瓶颈问题,但是定位方法一致,项目中也遇到过几次,分享下定位经验 1.登录项目所在服务器,直接执行top命令,可以看到cpu使用情况, ...
- linux下查找java进程占用CPU过高原因
linux下查找java进程占用CPU过高原因 1. 查找进程 top查看进程占用资源情况 明显看出java的两个进程22714,12406占用过高cpu. 2.查找线程 使用top -H -p &l ...
- linux php cpu,查找linux下进程占用CPU过高的原因,以php-fpm为例
很多时候,线上服务器的进程在某时间段内长时间占用CPU过高,为了优化,我们需要找出原因. 1.找出占用CPU最高的10个进程 ps aux | sort -k3nr | head -n 10 或查看占 ...
- epoll 性能分析(解决占用CPU 过高问题)2
epoll 性能分析(解决占用CPU 过高问题)2 参考文章: (1)epoll 性能分析(解决占用CPU 过高问题)2 (2)https://www.cnblogs.com/Jimmy104/p/5 ...
最新文章
- python3 lambda表达式
- 批处理***与注册表
- iOS 移动端overflow:auto 滚动不平滑及bug处理
- Servlet的request.getRemoteAddr()方法回去地址是0:0:0:0:0:0:0:1
- Node.js:Node基础
- VS2010下配置 OpenCV2.2
- 【中学】寻找阿姆斯特朗数
- 绿色版电子书PDF转换Word转换器
- python提取首字符 判断火车票座位_python实战之通过爬虫实现火车票查询
- ctfshow_萌新_萌新隐藏题
- 各国语言缩写-各国语言简称
- office365服务器没有响应,Win10安装Office365时电脑无响应的原因和解决方案
- 奇安信可信浏览器下载地址
- 别让自己“墙”了自己(2019.12.1)
- SQL--乱七八糟问题
- C# Show()和ShowDialog()
- crackme例子2
- java swing界面美化_java Swing界面优化Jpanel教程
- ToDesk远程控制
- Laravel5.5源码详解 -- Laravel-debugbar及使用elementUI-ajax的注意事项
热门文章
- 高通modem启动过程_苹果首次承认正自研基带芯片,高通要被抛弃了?
- JetBrains - IDEA 常用快捷键汇总
- 无数种求逆元的方法总结
- android滑动菜单图标,Android实现简单底部导航栏 Android仿微信滑动切换效果
- mete30是鸿蒙系统么,华为mete30pro什么时候能用上鸿蒙系统?
- 使用三种方式创建Class字节码类文件对象
- 如何实现Oracle数据库之间的数据同步?
- 管道实现父子进程的信息传递(一)【fork函数、pipe函数、write/read操作、wait函数】
- C++:45---多态
- C++:17---函数指针