DWS应急预案(七)IO高
1.1 IO高(预计10min)
1.1.1 应急步骤
1. 检查是否单盘IO使用率高,并对硬件进行告警检查和巡检,排除硬件问题
2. 在IO高的实例上部署iowatcher脚本
3. 查杀执行时间长的语句
select 'execute direct on(' || coorname || ') ''select pg_cancel_backend(' || pid || ')'';', sysdate - query_start as dur, state, query_id, enqueue, query from pgxc_stat_activity where state <> 'idle' and usename <> 'omm' and usename <> 'Ruby' order by dur desc limit 100;
4. 根据iowatcher的结果查杀IO高的语句
使用对应语句的pid,查杀该语句:
execute direct on(node_name) 'select pg_cancel_backend(pid)';
5. 重点排查语句下盘情况:
登录IO高实例,进入该实例对应的数据目录下,cd base/pgsql_tmp,查看下盘文件数和下盘大小:
ls | wc -l
du -sh pgsql_tmp
如果频繁下盘,根据下盘文件对应的pid和queryid查杀语句(下盘文件命名格式为:pid_queryid.xx)
6. 如果高IO消耗的语句被查杀后,依然频繁被应用端拉起,则将语句加入黑名单,临时禁止执行(与客户沟通授权)--仅8.2.0及以上版本
1) 根据上一步的语句query_id在实时topsql视图找到对应unique_sql_id
select queryid,unique_sql_id,query from pgxc_wlm_session_statistics where start_time > current_date and queryid=query_id;
2) 将语句加入黑名单
select * from gs_append_blocklist(unique_sql_id);
3) 查看当前黑名单详情
select * from gs_blocklist_query;
4) 业务优化后,将其从黑名单移除
select gs_remove_blocklist(unique_sql_id);
7. 如果await指标异常,联系硬件同步排查硬件侧瓶颈(读写策略、坏盘等):
https://bbs.huaweicloud.com/forum/thread-152917-1-1.html
1.1.2 恢复确认
IO使用率降低至90%以下。
1.1.3 原因分析
1. iowatcher结果示例如下:
其中,result sorted by read io表示按读IO使用率降序排列的语句;result sorted by write io表示按写IO使用降序排列的语句。可根据抓取到的结果查杀或优化相关语句。
1.1.4 预防再次出现
1. 根据iowatcher结果对业务语句进行优化
2. 根据资源使用扩容节点数
- 点赞
- 收藏
- 关注作者
评论(0)