db2数据库sortheap排序堆自动扩展严重影响系统CPU使用情况,造成业务严重缓慢,如何确认根源?

首先,1、现场用户反映ERP操作超慢。

2、查看数据库服务器CPU使用情况

CPU  User%  Kern%  Wait%  Idle%

ALL    98.9      0.7      0.4       0.0

3、vmstat 1  3

kthr    memory              page              faults        cpu   

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

r b   avm   fre re  pi  po fr   sr  cy in   sy  cs us sy id wa

106  0 7302775 612682   0  0   0   0   0   0 3025 171014 10496 93  1 6  0

117  0 7302695 612762   0  0   0   0   0   0 3177 105729 16682 94  1 5  0

121  0 7302695 612762   0  0   0   0   0   0 2490 132521 28593 90  1 9  0

4、db2top中 UOW Executing 的app超多(总的app达到200多个,正在执行的80-90多个)

       22356(*) 13.47%  11.46%   1.50% UOW Executing                       db2jcc_applicat             13              0

        22388(*)  13.57% 12.15%   1.00% UOW Executing                       db2jcc_applicat             19              0

        22547(*)  13.71% 10.91%   1.00% UOW Executing                       db2jcc_applicat             18              0

        22482(*)  13.76% 10.81%   2.00% UOW Executing                       db2jcc_applicat             16              0

        22509(*)  14.43% 12.52%   1.00% UOW Executing                       db2jcc_applicat             13              0

        22581(*)  15.06% 14.05%   1.00% UOW Executing                       db2jcc_applicat             22              0

        22257(*)  15.57% 13.67%   1.00% UOW Executing                       db2jcc_applicat             22              0

5、此时zabbix中 显示CPU

360截图20170414094003383.jpg


正常情况的CPU使用情况:

11.jpg


6、出问题时的数据库排序事件:

7.jpg


正常情况下的排序事件

6.jpg


出现此情况,业务非常卡  ,ERP几乎不能使用,只能force掉所有数据库app才能解决,但是这不是根本。最近几天连续出现这种情况,请问各位大婶 ,我该如何确定具体哪个业务造成的?或者哪个具体的SQL造成的?晚上没人动什么东西,肯定是现场业务人员操作ERP画面造成的吧?

请大神给出分析和查找思路,不胜感激!

参与22

3同行回答

DB-TrendSetterDB-TrendSetter联盟成员数据库架构师公司
sort是CPU杀手,应对措施两个:1. 紧急应对措施:在服务器内存允许的情况下,同时增大SHEAPTHRES_SHR,SORTHEAP,以提高排序执行效率,缓解CPU使用率。2.根本解决方法:综合使用db2pd -edu, -apinfo选项 ,SYSIBMADM管理视图等定位消耗CPU的SQL,进行SQL优化。...显示全部

sort是CPU杀手,应对措施两个:

1. 紧急应对措施:在服务器内存允许的情况下,同时增大SHEAPTHRES_SHR,SORTHEAP,以提高排序执行效率,缓解CPU使用率。

2.根本解决方法:综合使用db2pd -edu, -apinfo选项 ,SYSIBMADM管理视图等定位消耗CPU的SQL,进行SQL优化。

收起
电信运营商 · 2017-04-14
浏览5401
  • 方法2 能说的具体点吗?我db2底子薄 您说的不太会操作,能说下具体步骤吗?
    2017-04-14
  • 方法1 并不是手动增大的 数据库自动Auto根据需要增加减少sortheap堆大小
    2017-04-14
  • db2pd -edu可以监控自edu启动以来的user cpu,sys cpu的使用情况,首先通过db2pd -edu interval=5 top=10 ,找到占用CPU资源的前10个edu,再通过db2pd -apinfo找到edu所对应的SQL语句和app_name.
    2017-04-15
  • 对于业务繁忙的数据库,建议对sort相关参数设置为固定值,避免频繁的申请释放内存带来的系统资源消耗。
    2017-04-15
  • 大哥这个参数目前设置为: Package cache size (4KB) (PCKCACHESZ) = (MAXAPPLS*8) Sort heap thres for shared sorts (4KB) (SHEAPTHRES_SHR) = AUTOMATIC(54090) Sort list heap (4KB) (SORTHEAP) = AUTOMATIC(10818) 应用连接数也是automatic 您建议每个参数设置多少合适呢?我们服务器内存32G
    2017-04-17
  • 鉴于你的排序情况,建议设置SHEAPTHRES_SHR=100000, SORTHEAP=20000
    2017-04-17
macrozengmacrozeng数据库管理员IBM
优化 SQL 是解决这个问题的王道,检查你的 SQL 语句,看看排序的语句是否可以优化。显示全部

优化 SQL 是解决这个问题的王道,检查你的 SQL 语句,看看排序的语句是否可以优化。

收起
政府机关 · 2017-04-14
浏览4882
  • 这我也知道,重点是如何在众多SQL中准确找出占用CPU高的?
    2017-04-19
db2china2db2china2技术经理DB2咨询服务
如果确认或想因排序所引起,排查重排序的SQL,可以考虑:1、MON_GET_PKG_CACHE_STMT()中的几个输出结果:STMT_TEXT,TOTAL_SECTION_SORT_TIME,OTAL_SECTION_SORTS,TOTAL_SORTS,SORT_OVERFLOWS。2、get snapshot for dynamic sql on <dbname>.对排序相关指标较高的SQL进行排查及...显示全部

如果确认或想因排序所引起,排查重排序的SQL,可以考虑:
1、MON_GET_PKG_CACHE_STMT()中的几个输出结果:STMT_TEXT,TOTAL_SECTION_SORT_TIME,OTAL_SECTION_SORTS,TOTAL_SORTS,SORT_OVERFLOWS。

2、get snapshot for dynamic sql on <dbname>.

对排序相关指标较高的SQL进行排查及优化。

收起
IT咨询服务 · 2018-06-27
浏览4379

提问者

hufeng719
系统工程师某钢铁企业
擅长领域: 数据库存储服务器

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2017-04-14
  • 关注会员:5 人
  • 问题浏览:12418
  • 最近回答:2018-06-27
  • X社区推广