GaussDB(DWS) 集群通信系列三:集群通信常用视图
视图是检测数据库运行状态的重要工具和手段,GaussDB(DWS)集群通信常用视图主要包含pg_stat_activity、pg_comm_client、pgxc_thread_wait_status、pgxc_comm_recv_stream、pgxc_comm_send_stream、pgxc_comm_status,其在数据库通信问题定位中发挥了重要作用。
1、pg_stat_activity
该视图显示和当前用户查询相关的信息。主要用于查看当前用户执行查询的状态和查询对应的query_id,
2、pg_comm_client_info
该视图存储单个节点客户端连接信息(DN上查询该视图显示CN连接DN的信息)。
3、pgxc_thread_wait_status
该视图显示由执行语句产生的线程之间层次调用关系,以及各个线程的阻塞等待状态。该视图常用来定位数据库通信过程中的hang问题,主要用于定位的信息包括:
Ø query_id:查询ID
Ø tlevel:线程层级,对于集群通信而言,Postgres thread线程为0级线程,其根据任务会fork其他子线程,集群通信线程间的关系具体可以参考http://3ms.huawei.cn/hi/group/2191/wiki_5275953.html?for_statistic_from=all_group_wiki
Ø wait_status:等待线程的当前等待状态,none表示没有等待,其他状态可参考产品文档。
4、pgxc_comm_recv_stream
该视图显示DN上所有的通信库接收流的状态。
5、pgxc_comm_send_stream
该视图显示DN上所有的通信库发送流的状态。
6、pgxc_comm_status
该视图显示所有DN的通信库状态。包含:节点名称、节点通信库发送/接收速率、cmailbox的buffer大小、libcomm/libpq进程通信内存大小、线程实时/最高实时使用率、当前使用的逻辑连接总数。
通信视图的关联关系使用和hang问题定位示例
查询单个的视图往往信息有限而作用不大,视图最大的妙用在于利用各信息的关联关系,要求使用者能够联系多方信息,进行问题定位和状态监测,这一点无疑比较困难,因此整理和介绍视图的关联关系对于视图使用者极为重要,此处仅通过hang问题的示例,和视图部分信息的关联关系使用,介绍这种运用思想和方法,通信视图完整的关联关系将在后续GaussDB(DWS) 集群通信系列中给出。
可以看出,定位hang问题的一般步骤为:
1、 根据pg_stat_activity视图查看当前查询的query_id。
2、 根据pgxc_thread_wait_status中相应的query_id查询对应的线程状态,是等待什么导致的hang
3、 根据wait_status的信息,查看对端信息,包含线程层级,节点等
4、 查看对端具体的线程信息pg_thread_wait_status,如果是DN可查对应的连接流信息,可以利用netstat,线程号查看对端信息,分析对端的行为。
通信hang问题典型案例:
- 点赞
- 收藏
- 关注作者
评论(0)