GaussDB(DWS) 集群通信系列四:常见问题定位

举报
半岛里有个小铁盒 发表于 2024/02/06 10:03:04 2024/02/06
【摘要】 GaussDB(DWS)集群通信技术,在大规模集群中可以承载高并发业务,能够实现高性能分布式通信系统。在数据做通信过程中,常常会出现各种各样的问题。因此,为了便于定位,我们将常见的问题及排查解决方案汇总,便于大家排查,更好的使用GaussDB(DWS)数据库。

GaussDB(DWS) 集群通信系列四:常见问题定位

1.前言

适用版本:【8.1.0(及以上)】

GaussDB(DWS)集群通信技术,在大规模集群中可以承载高并发业务,能够实现高性能分布式通信系统。在数据做通信过程中,常常会出现各种各样的问题。因此,为了便于定位,我们将常见的问题及排查解决方案汇总,便于大家排查,更好的使用GaussDB(DWS)数据库。

2.常见报错

2.1 CN连接DN报错, 主要关注后面的detail信息

  • Already too many client:DN线程数超过max_connections上限
  • Connection timed out:TCP建连超时,网络不通或者网络质量差
  • Connection refused:TCP建连被拒绝,防火墙配置或者端口号错误
  • timeout expired:连接已经建立,但连接信息同步时对端响应超时

2.2 数据收发过程中报错

  • cancel/terminate日志:外部信号中止查询
  • reset by peer/broken pipe:连接对端线程主动关闭连接
  • Stream closed by remote:对端关闭连接或发生重启,需查看对端日志
  • Peer address changed:对端DN存在主备切换

3.性能问题

3.1 DN间通信性能差

  • pv_total_memory_detail中通信内存过大:Libcomm通信库降级运行
  • gsar监控有严重丢包重传:网络质量差,丢包过多导致连接断开
  • top查看CPU高或者ksoftirq进程CPU高:排查异常CPU占用

3.2 查询性能慢,查看CN pg_thread_wait_status视图显示大量建连状态"pooler create conn"

大量pooler建连状态,说明空闲连接不够用。需要先确认当前的空闲连接状态:

select in_use,count(*) from pg_pooler_status group by 1 order by 2 desc where database='XXX' and node_name='XXX';

如果空闲连接和非空闲连接都很少,说明连接用完即销毁了。需要确认pooler连接池开关参数cache_connection=on,并确认CN日志没有报错。

如果非空闲连接很多,空闲连接很少,说明并发太大,连接都在使用中,需要降低并发,或调大max_pool_size。

4. 网络环境问题

  • $GAUSSHOME/bin/dfx_tool/gsar:网络重传丢包实时监控脚本
  • gs_check:检查网络参数配置
  • netstat -anop|grep 'on |sort -rnk3:实时查看TCP重传连接

5. 通信hang问题

5.1 使用通信中的视图进行分析

组合使用pgxc_stat_activity、pgxc_thread_wait_status、pgxc_comm_send_stream、pgxc_comm_recv_stream视图定位问题

示例中定位hang问题步骤为:

  1. 在pgxc_stat_activity视图中找到问题查询的query_id;
  2. 根据query_id查询pgxc_thread_wait_status视图,看到CN在等DN4的数据,而DN4在与DN42建连;
  3. 查询pgxc_comm_send_stream看到DN4发起的与DN2的逻辑连接中有一个处于READY半连接状态;
  4. 查询pgxc_comm_recv_stream看到DN2已经接受了DN4发起的4个逻辑连接,问题出在DN4逻辑连接应答上;

6. 结合explain performance性能分析

DN间接收数据分两个动作
LibcommRecvPoll,等待数据到达
LibcommRecv,数据到达后接收数据

上图中计划中的时间介绍如下:

  • Poll Time:等待数据到达所花费的时间
  • Send time:发送数据并接收对端quota所花费的时间
Poll Time Stream Send time 原因
consumer较少时间在接收数据,消费能力不足
producer较少时间在发送数据,生产能力不足
1.wait quota时间短,OS send时间长,TCP发送丢包阻塞
2.wait quota时间长,两端互等,资源瓶颈/环境问题

7.总结

在GaussDB通信运维中,很多情况是由于一些参数配置的不合理导致集群效率低、资源过载、连接异常等问题。对于通信库和操作系统两方面都提供了大量可供用户自定义的参数、视图、脚本,熟练掌握一些重要工具有助于快速定位现网通信故障问题。

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

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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