cpu使用率

线上cpu使用率过高解决方案

故事扮演 提交于 2019-12-05 07:25:29
一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。 下面我们将一步步定位问题,详尽的介绍每一步骤的相关知识。 一、通过top命令定位占用cpu高的进程 执行top命令得到以下结果: top命令查询结果 通过上图可以明显看出进程PID41843占用cpu过高,明显存在问题,定位到了进程id。当然如果你想只观察进程PID41843的CPU和内存以及负载情况,可以使用以下命令 top -p 41843 结果如下: top -p 41843命令执行结果 这里顺便解释下上图各个参数的意义,有利于读者更好的排查问题。 1.第一行是任务队列信息 top - 14:06:34 up 537 days, 6 min, 6 users, load average: 0.41, 0.45, 0.43 2.第二行为进程的信息 3.第三行为cpu信息 4.第四、五行为内存信息。 内容如下: 二、通过top命令定位问题进程中每个线程占用cpu情况 通过问题进程中每个线程占用cpu情况使用可以使用如下命令: top -p 41843 -H 查看进程PID41843的每一个线程占用CPU情况,如图。 top -p 41843 -H的执行结果 由上图明显可以发现,线程PID41892CPU占用率最高,接下来定位该线程的代码是否出现异常导致cpu占用过高。 三、通过jstack

mysql cpu使用率过高解决方法

别说谁变了你拦得住时间么 提交于 2019-12-04 10:58:56
mysql cpu使用率过高解决方法 1 mysql查看正在运行的语句 并且查看运行最多的mysql语句 MySQL 打开 general log 后,所有的查询语句都会记录在 general log 文件,文件为只读方式,但这样general log文件会非常大,所以默认是关闭的。 但有时需要查错等原因,暂时需要打开general log。 打开方法: select version();//我的是5.6是支持一个日志的开启。 set global general_log=1;//开启查询日志 set global log_output='TABLE';//general_log支持输出到table: 如果开启了table就会输出到数据库表中 不会输出到文件中 select * from mysql.general_log\G;//查询所有sql语句的使用 select * from (select argument, count(*) as number from mysql.general_log group by argument)t order by number DESC;//降序排列使用最多的sql语句,值是mysql 的基本功哈。 建议开了1分钟后可以关了 可以进行优化了 然后优化完了 可以清除表再开启测试 set global general_log = off;

CPU负载和CPU使用率

匿名 (未验证) 提交于 2019-12-03 00:17:01
参考CSDN博客: https://blog.csdn.net/ffzhihua/article/details/87257607 一、概念(本人理解) CPU负载:平均负载(load average)是指某段时间内占用cpu的进程(已经在被执行的进程数)和等待等待cpu时间的进程数(这里等待cpu时间的进程是指等待被唤醒的进程),不包括处于wait状态进程(还未被执行却等待被执行的进程数)。 CPU使用率:指当前CPU被使用的程度,反映的是当前cpu的繁忙程度,忽高忽低的原因在于占用cpu处理时间的进程可能处于io等待状态但却还未释放进入wait。 二、CPU负载的一个类比 判断系统负荷是否过重,必须理解load average的真正含义。下面,我根据"Understanding Linux CPU Load"这篇文章,尝试用最通俗的语言,解释这个问题。 首先,假设最简单的情况,你的电脑只有一个CPU,所有的运算都必须由这个CPU来完成。 那么,我们不妨把这个CPU想象成一座大桥,桥上只有一根车道,所有车辆都必须从这根车道上通过。(很显然,这座桥只能单向通行。) 系统负荷为0,意味着大桥上一辆车也没有。 系统负荷为0.5,意味着大桥一半的路段有车。 系统负荷为1.0,意味着大桥的所有路段都有车,也就是说大桥已经"满"了。但是必须注意的是,直到此时大桥还是能顺畅通行的。

[Android]获取cpu使用率

梦想与她 提交于 2019-12-01 13:23:14
public static float getProcessCpuRate() { float totalCpuTime1 = getTotalCpuTime(); float processCpuTime1 = getAppCpuTime(); try { Thread.sleep(360); } catch (Exception e) { } float totalCpuTime2 = getTotalCpuTime(); float processCpuTime2 = getAppCpuTime(); float cpuRate = 100 * (processCpuTime2 - processCpuTime1) / (totalCpuTime2 - totalCpuTime1); return cpuRate; } public static long getTotalCpuTime() { // 获取系统总CPU使用时间 String[] cpuInfos = null; try { BufferedReader reader = new BufferedReader(new InputStreamReader( new FileInputStream("/proc/stat")), 1000); String load = reader.readLine();

寻找CPU使用率高的进程方法

被刻印的时光 ゝ 提交于 2019-12-01 02:11:25
寻找CPU使用率高的进程方法 发布时间: 2017-07-13 浏览次数: 1362 下载次数: 0 问题描述 节点报CPU使用率高,甚至出现“ALM-12016 CPU使用率超过阈值”告警,需要定位是什么进程占用CPU使用率高。 处理过程 对于持续cpu过高的处理: 1.在对应节点使用 “top”命令,然后键盘输入“C”,即按照CPU使用率排序进程。 2.执行 ps -ef | grep <CPU使用率高的PID> 确认该进程的详细信息,确认该进程的日志。查看该组件日志,占用CPU高是否正常。 对于偶发性的cpu过高的处理: 1.在操作系统日志“/var/log/osinfo/statistics/ps.txt”会记录每2分钟执行一次ps命令的结果。 但是该信息只记录了进程的基本信息 2.使用如下命令,可以打印出CPU占用率最高的十个进程的信息 ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head 3.在对应节点创建如下shell文件checkcpu.sh #!/usr/bin/env bash logFile=/var/log/Bigdata/checkCpuUsage.log delayTime=30 # seconds between each excute, default value is 30 seconds

设计软件调节CPU使用率及更改优先级

末鹿安然 提交于 2019-11-30 09:29:18
一、设计师有时需要同时打开不同的设计软件,但有些设计软件占用资源很高,像3Dmax渲染时会占用所有CPU资源基本做不了其它操作,用以下方法就可以调节CPU使用率。 1、以7800x6核12线程操作3Dmax2018为例。 设计软件调节CPU使用率及更改优先级 渲染CPU使用率100% 2、打开任务管理器点详细信息,右击CPU资源使用最高的“3Dmax主程序”在弹出的选择中选择 “查看相关性”,在打开的以CPU相关性窗口选择CPU数量本次选择CPU0-CPU5建议最少留2颗。 设计软件调节CPU使用率及更改优先级 3、修改完后在次查看CPU利用率在66%左右 设计软件调节CPU使用率及更改优先级 二、某些程序需要使用系统最多资源让程序更快速相应最高效运行,这时候就可以调整它的优先级来提高程序工作效率。 1、任务管理器-详细信息-右击要调节的程序设置优先级-高(建议为高实时会影响系统稳定)​​​​ 来源: https://blog.csdn.net/u011610695/article/details/101264121

某个应用使cpu使用率100%

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-28 15:21:57
--CPU 使用率 Linux 是一个多任务的操作系统,将每个 cpu 的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉 为了维护 cpu 时间, linux 通过事先定义的节拍率(内核中表示为 HZ ) , 触发时间中断,并使用全局变量 jiffies 记录了开机以来的节拍数 [root@rac2 ~]# grep 'CONFIG_HZ=' /boot/config-$(uname -r) # 默认值 CONFIG_HZ=1000 Linux 通过 /proc 虚拟文件系统,向用户空间提供了系统内部状态的信息,而 /proc/stat 就提供了系统的 cpu 和任务统计信息。只关注 cpu 的话。 [root@rac2 ~]# cat /proc/stat |grep ^cpu cpu 754068 26 321049 32751985 349040 51226 32180 0 0 cpu0 398928 11 184461 16311267 198855 49476 17588 0 0 cpu1 355140 14 136588 16440717 150185 1750 14591 0 0 第一列是 cpu 的编号,如 cpu0 , cpu1 ,第一行没有编号的 cpu ,表示的所有 cpu 的累加。 其他列则表示不同场景下 cpu

某个应用的CPU使用率居然达到100%,我该怎么做?(三)

笑着哭i 提交于 2019-11-28 15:21:26
某个应用的CPU使用率居然达到100%,我该怎么做?(三) 1. 引 你们好,可爱的小伙伴们^_^! 咱们最常用什么指标来描述系统的CPU性能呢?我想你的答案,可能不是平均负载,也不是CPU上下文切换,而是另一个更直观的指标----> CPU使用率。 CPU使用率是单位时间内CPU使用情况的统计,以百分比的方式展示。那么,作为最常用也是最熟悉的CPU指标,你能说出CPU使用率到底是怎么算出来的吗?再有,诸如top,ps之类的性能工具展示的%user,%nice,%system,%iowait,%steal等等,你又能弄清楚他们之间的不同吗? 2. 什么是CPU使用率? Linux作为一个多任务操作系统,将每个CPU的时间划分为很短的时间片,再通过调度器轮流分配给各个任务使用,因此造成多任务同时运行的错觉。 为了维护CPU时间,Linux通过事先定义的节拍率(内核中表示为HZ),触发时间中断,并使用全局变量Jiffies记录了开机以来的节拍数。每发生一次时间中断,Jiffies的值就加1。 节拍率HZ是内核的可配选项,可以设置为100,250,1000等。不同的系统可能设置不同数值,你可以通过查询/boot/config内核选项来查看它的配置值。比如在我的系统中,节拍率设置成了1000,也就是每秒钟触发1000次时间中断。 [root@localhost ~]# cat /etc

linux下限制CPU使用率的3种方法 (转)

痴心易碎 提交于 2019-11-28 14:03:21
在租的云服务器上架了一个获取BTCC实时交易数据的服务器程序,因为用了一个while死循环处理数据信息,所以云服务器上的处理器占用率一直在90%多,这两天邮箱里一直收到服务器CPU占用率过高的邮件,在网上找到了下边的这种方法来限制CPU占用率。我用的是下边的cuplimit这个方法,使用apt-get安装时出现了一个python编译器的错误,所以干脆下载了cpulimit源码,自已直接make了。 转自: http://blog.163.com/song_0803/blog/static/4609759720091014106684/ linux下限制CPU使用率的3种方法 1,apache本身的限制功能(RLimitCPU) http://www.wrensoft.com/forum/archive/index.php/t-12.html 引用国外这个帖子 Ray03-19-2008, 05:20 AM The PHP test can be used to show that the problem is evident, but it is not conclusive to prove that there is no limit put in place. The reason is that it depends on how PHP is configured on

Linux杀不死的进程之CPU使用率700%

隐身守侯 提交于 2019-11-27 10:11:10
1. 问题发现 [root@zwlbs3 ~]# top i. 发现有个进程CPU使用率居然700%,COMMAND 是一些随机的字符串组成,完了~ 中标了;第一想到就是“沙雕”它,kill 命令给我上。 [root@zwlbs3 ~]# kill -9 "PID" ii. 但是发现 kill 该进程平静一会后又启动了。 注:老图复用,PID、COMMAND 都有变化。 2. 查看进程的详细信息 [root@zwlbs3 ~]# cd /proc/748/ [root@zwlbs3 748]# ls -ial # "748"是该进程的 PID,根据你的 PID 来查看即可。 如图: 发现该进程是在 /dev/shm 目录下的,/dev/shm 是一个什么目录呢? 从网上摘下来一段我们解一下 /dev/shm 1) 首先可以看出来/dev/shm是一个设备文件, 可以把/dev/shm看作是系统内存的入口, 可以把它看做是一块物理存储设备,一个tmp filesystem, 你可以通过这个设备向内存中读写文件, 以加快某些I/O高的操作,比如对一个大型文件频繁的open, write, read。 2) 据说oracle就利用了/dev/shm(shitou没用过oracle), 可以通过mount命令列出当前的/dev/shm的挂载的文件系统。 3) 既然是基于内存的文件系统