南大通用数据库-Gbase-8a-学习-43-SQL长时间处于Writing to net状态排查

目录

一、问题截图

二、排查思路

1、Gbase8a SQL有几种状态

2、问题导致原因猜想

3、观察服务端(集群端)网络情况

4、观察客户端网络情况

5、排查客户端程序处理数据慢

5.1、send

(1)声明 

(2)作用

(3)参数

(4)返回值

(5)阻塞条件

5.2、recv

(1)声明 

(2)作用

(3)参数

(4)返回值

(5)阻塞条件

5.3、优化思路

6、查看计算节点

7、gccli执行SQL

8、调整参数max_allowed_packet


一、问题截图

今天我发现一个有趣的现象,用户执行一条长达17287秒(差不多5小时)的SQL,这个SQL并没有特别复杂,我用红箭头指出了特殊点:

1、SQL处于Writing to net状态。(这个状态持续了4个多小时)

2、查询的是INFORMATION_SCHEMA.COLUMNS系统表。

3、没有加过滤条件。

二、排查思路

1、Gbase8a SQL有几种状态

状态 含义
init 表示SQL进入准备执行阶段,开始执行计划。
deleting from main table/updating main table 准备对主表进行删除或更新操作。
end/query endSQL SQL到达结束状态,准备清理资源。
Creating tmp table 查询过程中,正在创建临时表。
Sending data 读取数据向发起段发送查询结果。
closing tables 关闭打开的表。
Evaluating 执行计划评估。
Executing by step 执行计划中的每一步。
Preparing metadata 取得本查询所涉及表的可用节点信息。
Sending task to gnodes 发送任务给数据节点。
Clear tmp tables 查询完成,开始清理临时表。
Writing to Net 向客户端发送数据包。
checking permissions 检查权限。
commit 提交数据。
killed 被杀死。
logging slow query 审计日志在保存慢SQL信息。
Rolling back 数据回滚。

2、问题导致原因猜想

我们看到了Writing to Net的意思是向客户端发送数据包,会不会是网络的问题导致。我们可以提出一下几个猜想。

猜想 是否为问题原因
服务端网络负载高 未验证
客户端网络负载高 未验证
客户端程序处理数据慢 未验证

3、观察服务端(集群端)网络情况

Writing to Net的意思是向客户端发送数据包。会不会是网络负载较高,我这边是万兆网卡,理论可以达到10000Mbit/s,1Mbit(兆位) = 0.125Mb(兆字节)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值