GBase 8a集群运维,网卡rx,tx配置参数问题,导致性能偶发缓慢

GBase 8a是MPP架构,一些SQL要在多个节点间互相传输大量数据,如果网卡配置rxt和tx参数不适合,会导致丢包dropped,从而出现相同的SQL性能忽然下降的现象。本文给出此问题的具体现象,原因和解决方法。

现象

相同的业务SQL,偶发性能断崖式下降,比如平时10秒,偶发能到100秒,200秒以上,有明显的抖动。而且发生问题时,这一批SQL都有影响。大部分情况下,问题会自动环境并恢复。

排查

找到性能影响的节点

根据木桶效应,大部分情况都是1个节点(也有多个的)性能下降,导致整体性能下降。通过查看慢SQL出现在哪个或者哪些节点,定位要排查的目标。

排查可以用如下SQL

select NODE_NAME, ID, user, host, command, start_time, time, state, substring(info,0,100) info from information_schema.GNODES_TASK_INFORMATION where command='query' and info is not null and info not like '%information_schema.processlist%' order by time desc limit 10;

查看节点网卡信息

通过如下命令,查看服务的eth0网卡信息。网卡不同,参数替换下

ifconfig -a eth0

主要查看tx和tx数据包内容,正常的如下

[gbase@vm161 ~]$ ifconfig -a enp0s3
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.161  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::a00:27ff:fe70:4bfc  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:70:4b:fc  txqueuelen 1000  (Ethernet)
        RX packets 229083  bytes 328000550 (312.8 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 35066  bytes 2680368 (2.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

有故障的网卡信息如下,其中dropped的数量,一直在缓慢的不定期增长。

RX errors

接收总错误数。包含 dropped overruns frame 等细分错误类型的计数

dropped:接收数据包丢弃数

网卡成功接收到数据包,但因系统层面资源不足,无法将数据包传递给上层协议栈(如 TCP/IP)而丢弃的数量。

overruns:接收缓冲区溢出数

网卡硬件接收缓冲区(Ring Buffer)溢出导致的数据包丢弃数,属于硬件层面的溢出错误,和 dropped 的 “系统缓冲区溢出” 是不同层面的问题。

查看网卡Rx,Tx信息

通过如下命令,查看TX和RX信息

[root@vm161 ~]#  ethtool -g enp0s3
Ring parameters for enp0s3:
Pre-set maximums:
RX:                     4096
RX Mini:                n/a
RX Jumbo:               n/a
TX:                     4096
TX push buff len:       n/a
Current hardware settings:
RX:                     256
RX Mini:                n/a
RX Jumbo:               n/a
TX:                     256
RX Buf Len:             n/a
CQE Size:               n/a
TX Push:                n/a
RX Push:                n/a
TX push buff len:       n/a
TCP data split:         n/a

其中RX配置的是256,太小。

解决方案

修改网卡的Rx和tx大小。其中参数rx和tx分别修改。

[root@vm161 ~]#  ethtool -G enp0s3 rx 4096 tx 4096
[root@vm161 ~]#  ethtool -g enp0s3
Ring parameters for enp0s3:
Pre-set maximums:
RX:                     4096
RX Mini:                n/a
RX Jumbo:               n/a
TX:                     4096
TX push buff len:       n/a
Current hardware settings:
RX:                     4096
RX Mini:                n/a
RX Jumbo:               n/a
TX:                     4096
RX Buf Len:             n/a
CQE Size:               n/a
TX Push:                n/a
RX Push:                n/a
TX push buff len:       n/a
TCP data split:         n/a
[root@vm161 ~]#

修改后,再次观察网卡dropped,发现没有再增加。后续观察几天,一直正常,性能也恢复到稳定状态。

总结

网卡RX和TX参数配置不当,导致在大数据量传输下出现丢包,造成性能下降。通过调整参数,解决了这个问题。