抓 TOP SQL 解决CPU利用率过高问题

--模拟CPU利用率过高的情况:

SQL> select count(*) from  T_LTE_CARD_INFO ;

COUNT(*)

----------

3516598

SQL> select * from  T_LTE_CARD_INFO ;

[[email protected] ~]$ top

top - 11:10:20 up 19:31,  3 users,  load average: 0.17, 0.23, 0.14

Tasks: 187 total,   3 running, 184 sleeping,   0 stopped,   0 zombie

Cpu(s): 15.7%us,  8.2%sy,  0.0%ni, 74.3%id,  1.1%wa,  0.0%hi,  0.7%si,  0.0%st

Mem:   3925464k total,  3774424k used,   151040k free,    64040k buffers

Swap:  8388600k total,   366612k used,  8021988k free,  1963848k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

7085 oracle    20   0 45480  10m 7388 R 56.7  0.3   0:13.21 sqlplus

6525 root      20   0 98.4m 4460 3164 R 31.2  0.1   2:50.75 sshd

22 root      20   0     0    0    0 S  4.3  0.0   0:30.05 events/3

2954 oracle    20   0 1687m 125m 120m S  2.7  3.3   0:04.18 oracle

19 root      20   0     0    0    0 S  1.0  0.0   0:06.06 events/0

21 root      20   0     0    0    0 S  0.3  0.0   0:03.63 events/2

2349 mysql     20   0 1121m 247m  696 S  0.3  6.5   1:01.55 mysqld

2952 oracle    20   0 1686m  46m  42m S  0.3  1.2   0:18.78 oracle

2958 oracle    20   0 1688m  53m  47m S  0.3  1.4   0:18.12 oracle

--查找后台在干什么

[[email protected] ~]$ ps -ef | grep 7085

oracle    7085  6764 29 11:08 pts/0    00:00:55 sqlplus

oracle    7089  7085  0 11:08 ?        00:00:00 oracleorcl (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))

oracle    7101  6950  0 11:11 pts/1    00:00:00 grep 7085

[[email protected] ~]$

--找到具体的SQL语句,原来是在执行大表查询

[[email protected] ~]$ sqlplus " /as sysdba"

SQL>

SQL> SELECT b.sql_text

2    FROM v$session a, v$sqlarea b

3   WHERE     a.sql_hash_value = b.hash_value

4         AND a.sid = (SELECT A.SID

5                        FROM V$SESSION A, V$PROCESS P

6                       WHERE P.ADDR = A.PADDR AND P.SPID = 7089)

7  ;

SQL_TEXT

--------------------------------------------------------------------------------

select * from  T_LTE_CARD_INFO

SQL> SELECT a.pid,

2         a.spid,

3         b.sid,

4         b.serial#,

5         c.sql_text

6    FROM v$process a, v$session b, v$sqlarea c

7   WHERE a.addr = b.paddr AND b.sql_address = c.address AND B.PROCESS=‘7085‘

8  ;

PID SPID                SID    SERIAL#   SQL_TEXT

--------------------------------------------------------------------------------

16 7089                144       3293    select * from  T_LTE_CARD_INFO

SQL> alter system kill session ‘144,3293‘;

System altered.

--CPU利用率下降

[email protected] ~]$ top

top - 11:17:26 up 19:38,  3 users,  load average: 0.29, 0.31, 0.20

Tasks: 187 total,   1 running, 186 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.4%us,  0.2%sy,  0.0%ni, 98.7%id,  0.8%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   3925464k total,  3746036k used,   179428k free,    58188k buffers

Swap:  8388600k total,   367056k used,  8021544k free,  1941180k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

1 root      20   0 19364  612  436 S  0.0  0.0   0:01.69 init

2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd

3 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 migration/0

4 root      20   0     0    0    0 S  0.0  0.0   0:00.12 ksoftirqd/0

5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0

6 root      RT   0     0    0    0 S  0.0  0.0   0:00.12 watchdog/0

7 root      RT   0     0    0    0 S  0.0  0.0   0:00.03 migration/1

8 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/1

9 root      20   0     0    0    0 S  0.0  0.0   0:00.45 ksoftirqd/1

10 root      RT   0     0    0    0 S  0.0  0.0   0:00.11 watchdog/1

11 root      RT   0     0    0    0 S  0.0  0.0   0:00.01 migration/2

来自为知笔记(Wiz)

时间: 2024-11-03 21:55:09

抓 TOP SQL 解决CPU利用率过高问题的相关文章

C++ 多线程编程解决CPU占用率高问题

在用C++进行多线程编程的时候,时常需要写一些类似于死循环的结构来执行代码,这些死循环如果没有经过处理一直开着,那么CPU的占用率就会居高不下的做着很多无用的操做.为解决这个问题我们可以通过在各线程中的适当位置添加Sleep函数来休眠该线程,使其少做这些无用的操作.经过这个处理,正常能压缩掉一半以上的CPU占用.C++ 多线程编程解决CPU占用率高问题

记一次java应用cpu利用率过高调试经历

1,现象 写的一个storm应用,主要是通过mysql的binlog来同步表到hbase.运行一段时间后发现,经常会出现cpu使用率飙升到200%以上,然后各种消息堆积报警等等出现各种问题 2,调研过程 cpu使用率很高,所以首先找到该进程,通过top命令,监控该进程的使用率,然后通过H,查看各个线程的cpu使用率情况,记下cpu使用率高的线程id,然后通过jstack pid,获取各个线程栈,听过top获取的线程id转化成16进制后,发现有问题的线程栈如下: 发现主要问题原来出现在HashMa

【经验之谈】mysql占用CPU利用率过高的问题

前段时间Zabbix上出现自告警,报Escalators进程压力过大,增大Escalators参数,等改到80-90才不告警了,就觉得不对劲. 到设备上top一下发现mysql把95%上的CPU都吃掉了 上mysql去show processlist; 发现有大量sleep进程,show status like 'Thread%':看到连接数只有138. 修改my.cnf文件,将max_connections降低到300, 发现没有改善,百度到可能是全局读写timeout时间没有优化的问题 修改

CPU利用率很高 800%爆了

快下班,问题来了 记一次快下班的记录 快下班了,好友发来了一张照片,如下: 中毒了,没问题,肯定是!!! 开始qq对话解决 **有监控吗,快速查看流量图,看看是否发包或者被发包?** 答曰:没有监控 **那查看一下交换机的接口流量呢?** 答曰:交换机是傻瓜二层的 **那看看防火墙的呢?** 查看流量并没有什么影响. 实在是解决太慢了,而对方的机器是内容,最后通过内容的某太机器,我远程朋友的qq桌面,远程服务器,10分钟后终于连接上了. 开始远程解决问题 1.find / -name cranb

linux下用top命令查看cpu利用率超过100%

这里显示的所有的cpu加起来的使用率,说明你的CPU是多核,你运行top后按大键盘1看看,可以显示每个cpu的使用率,top里显示的是把所有使用率加起来 按下1后可以看到我的机器的CPU是双核的.%Cpu0,%Cpu1 这里我们也可以查看一下CPU信息:在命令行里输入:cat /proc/cpuinfo 这里可以看到cpu cores       : 2

HUAWEI QUIDWAY NE20-8路由器CPU利用率过高

<NE20>dis cpu-usage CPU Usage Stat. Cycle: 42 (Second) CPU Usage            : 85% Max: 100% CPU Usage Stat. Time : 2020-03-31  12:12:31 CPU Usage Stat. Tick : 0x11a45(CPU Tick High) 0x58acedd4(CPU Tick Low) Actual Stat. Cycle   : 0x0(CPU Tick High)

centos内存大量被占用(kswap进程CPU利用率过高100%)的解决方案

问题描述:      通过free查看时,大概有一半以上的物理内存分配到cache里面,这样大的 cache是造成内存的耗尽缘由,与此同时使用top或ps查看进程时,kswapd进程负荷 很高,一般在90%以上,kswapd进程的作用是用于内存回收,确保系统空闲物理内 存的数量在一个合适的范围,它是按照一定比率来回收系统当前不活动的内存(默 认的比率是5%),也就是cache和buffer占用的.    在红旗4.0或4.1服务器版本(小于2.4.21-9.30的内核应该都存在这个问题)上安装数

jstack命令定位java程序CPU利用率高的代码位置

高手是怎么使用jstack精确找到异常代码的(java程序CPU利用率高的情况) 请jstack神器来帮忙 本文介绍Linux环境下使用jstack定位问题的秘笈s1.[top命令]找到CPU利用率持续比较高的进程,获取[进程号],此处PID为 1289112891 s2.[ps p 12891 -L -o pcpu,pid,tid,time,tname,cmd 命令]找到上述进程中,CPU利用率比较高的[线程号TID](十进制数),此处为 12946ps p 12891 -L -o pcpu,

MongoDB CPU 利用率高排查

MongoDB CPU 利用率高,怎么破? 经常有用户咨询「MongoDB CPU 利用率很高,都快跑满了」,应该怎么办? 遇到这个问题,99.9999% 的可能性是「用户使用上不合理导致」,本文主要介绍从应用的角度如何排查 MongoDB CPU 利用率高的问题 Step1: 分析数据库正在执行的请求 用户可以通过 Mongo Shell 连接,并执行 db.currentOp() 命令,能看到数据库当前正在执行的操作,如下是该命令的一个输出示例,标识一个正在执行的操作.重点关注几个字段 cl