GaussDB(DWS)等待视图wait_status常见状态介绍

举报
Arrow0lf 发表于 2022/03/24 18:44:43 2022/03/24
【摘要】 等待视图wait_status常见状态介绍

    等待视图pgxc_thread_wait_status是处理性能问题,查看语句执行状态最常用的视图之一。其中关键的一个字段是wait_status字段,表示当前线程的等待状态。等待状态的详细信息。产品文档中有章节专门对此字段进行描述(参考:https://support.huaweicloud.com/devg-dws/dws_04_0783.html)。本文针对性能调优过程中最常见的几种等待状态进行介绍,供读者参考。

  1. none

    none状态表示该线程并未在等其他线程,说明本线程正在工作,暂时不需要其他线程的数据,如果只有某一个dn的状态是none,其他dn状态是wait node或synchronize quit,说明该节点有瓶颈,需要排查是否有资源瓶颈或存在数据倾斜。

  2. wait cmd

    wait cmd表示当前线程已执行完毕,正在等待下一条输入。此种场景多见于copy场景,copy导入等待源端供数,copy导出等待目标端写数,都会出现这种情况。例如:构造场景:copy t(a) from stdin; 

    停止输入后,查看该语句等待视图如下:

    如果所有线程等待状态均为wait cmd,说明当前已执行完毕,正在等待下一条数据输入。在现网此种场景下,需排查源端供数是否有瓶颈。

    如果部分线程执行完,正在等待其他线程执行,等待状态也会是wait cmd。

  3. synchronize quit

    此线程已执行完毕,等待stream线程统一退出,此类线程不消耗资源,可以忽略,在查看等待视图时,一般将其过滤掉。

  4. acquire lock (relation/transaction)

    等待表级锁(relation)或事物锁(transaction),可以通过缩短报错时间、使用pgxc_locks_wait视图、查询pg_locks等方法排查,不在赘述,参考:

    常规锁简介:https://bbs.huaweicloud.com/blogs/228809

    锁等待场景介绍:https://bbs.huaweicloud.com/blogs/233114

  5. acquire lwlock

    获取轻量级锁,一般是资源管理相关的锁,不会持续很长时间,与当前集群资源情况(IO等资源)有关

  6. wait io

    等待IO完成,如果有大量wait io,说明当前io读写压力较高,可以通过iostat观察集群IO使用率等是否过高(超过90%),判断是单节点IO高还是整体IO高。

    单节点IO高:排查坏盘、磁盘读写策略、语句残留、存储倾斜、计算倾斜等场景;

    整体IO高:排查磁盘读写策略、表涉及是否合理、sql优化等角度处理。

  7. wait pooler get conn、pooler create conn: [nodename], total N、stream get conn、wait producer ready

    建联相关的等待事件,一般情况下这几个状态可能会同时出现,出现多个此类状态时说明集群间网络存在问题,需要排查网络,参考此链接排查:https://bbs.huaweicloud.com/blogs/235237

    最常见的一种场景是arm服务器未做网卡加固导致网络重传率高:https://bbs.huaweicloud.com/forum/thread-110780-1-1.html,需根据加固文档完成网卡加固。

    HCS场景下,stream慢的原因可能是网卡监控脚本重启网络服务导致:https://bbs.huaweicloud.com/forumreview/thread-186881-1-1.html

    HCS内核8.1.0版本,需要首先排查archive_mode参数是否为on,需要将该参数设置为off。

  8. flush data: [nodename](plevel), wait quota

    这种状态是当前节点向对端节点发送数据,正在等待quota值,一般是对端消费慢。例如:

    表示dn_6071向dn_6129的第5层(执行计划的第5层)发送数据,正在等待quota,说明dn_6129端消费慢,来不及处理发送过来的数据。如果长时间wait quota,需查看是否有数据倾斜(6129上数据量太多来不及处理发送过来的数据)或通信参数不合理(通信参数:https://bbs.huaweicloud.com/blogs/239863)。

  9. wait wal sync、wait data sync、wait data sync queue

    此类状态是主机向备机同步wal log或数据页,多发生于批量导入场景,尤其是行存表带索引导入并且在IO压力大时容易出现。业务上尽量避免行存表带索引的大批量导入。出现此类情况时,如果是单个节点出现且持续时间很长,可尝试kill 对端备机观察;如果多个DN出现,建议降低集群压力,减少并发导入的并发度。

  10. wait transaction sync: xid

    等待事务同步,事务同步的超时时间是600s,超过该时间会报错,可根据以下案例排查:https://bbs.huaweicloud.com/forum/thread-79130-1-1.html

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。