ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 进程导致CPU 100%解决步骤(转)

进程导致CPU 100%解决步骤(转)

原创 Linux操作系统 作者:jcszjswkzhou 时间:2019-06-20 20:57:06 0 删除 编辑
进程导致CPU 100%解决步骤,进程,性能调优

Oracle进程导致CPU 100%解决步骤

  1-- 检查系统
  sar -u 5 5
  2-- 看谁在用CPU
  topas
  ps -ef |grep ora #检查第四列C的大?a href=" target="_blank">。╱nit100 per cpu)
  3-- 检查CPU数量
  /usr/sbin/bindprocessor -q
  lsattr El proc0
  4-- 2种可能:
  1) A Background (instance) process
  2) An oracle (user) process #此种可能最大

  5-- 如果是用户进程:那么高CPU的主要原因有:
  Large Queries, Procedure compilation or execution, Space management and Sorting
  5.1-- 查看每个Session的CPU利用情况:

select ss.sid,se.command,ss.value CPU ,se.username,se.program from v$sesstat ss, v$session se where ss.statistic# in (select statistic# from v$statname where name = 'CPU used by this session') and se.sid=ss.sid and ss.sid>6 order by ss.sid


  5.2-- 比较上述Session看那个session的CPU使用时间最多然后查看该Session的具体情况:

select s.sid, event, wait_time, w.seq#, q.sql_text from v$session_wait w, v$session s, v$process p, v$sqlarea q where s.paddr=p.addr and s.sid=&p and s.sql_address=q.address;


  5.3-- 得到上述信息后查看相应操作是否有hash joins 和 full table scans如果有hash joins 和 full table scans那么必须创建相应的Index或者检查Index是否有效
  另外必须检查是否有并行的查询存在和同一时刻有多个用户在执行相同的SQL语句如果有必须关闭并行的查询和任何类型的并行提示(hints);如果查询使用intermedia数据那么为了减少总的Index大小必须限制使用Intermedia的Worldlist(try restricting the wordlist that intermedia uses to help reduce the total indexsize)

  6-- 上述方案只能根据已经运行完成的操作对于正在执行的长时间操作只能等操作完成后才能检测得到因此我们可以通过另外一个很好的工具来检测正在运行的长时间操作语句v$session_longops,这个视图显示那些操作正在被运行或者已经完成每个process完成后会刷新本视图的信息

  7-- 怎样寻找集中使用CPU的Process:
  很多时候会发现有N个Process在平均分享着CPU的利用率这种情况唯一的可能性就是这些Process在执行着相同的Package或者Query.
  这种情况:建议通过statspack,在CPU高利用率额时候运行几个快照然后根据这些快照检查Statspack报告检查报告中最TOP的Query然后使用 sql_trace and tkprof 工具去跟踪一下同时检查buffer cache 的命中率是否大雨95%

  同时在报告中还需要检查一下table scans (long tables)看是否在报告生成期间有存在全表扫描

  8-- 另外还有一些不是特别重要的但是也必须关心检查的参数可能消耗CPU
  parallel query 并行查询:
  并行查询最好用于数据仓库的环境下那种情况任何时候只有几个用户在同时使用在一个联机事务处理环境中当同时许多用户去并行查询一个数据库的巨大表时候会导致CPU的爆满所以最好在数据库的级别关闭并行查询:设置参数如下:

parallel_min_server = 0 parallel_max_server = 0 parallel_automatic_tuning = false;


  在配置上述参数后如果SQL语句中使用的并行的提示那么还是有可能会出现并行查询的情况所以还需要继续监视相关的SQL语句如果有就去除提示以达到目的

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-122174/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-08-29

  • 博文量
    3481
  • 访问量
    2847802