南大通用GBase 8a加载速度变慢原因排查汇总

GBase 8a加载过程中,可能受到数据源,网络,数据库节点资源等影响,导致加载性能变慢。包括持续变慢和偶发变慢两种情况。本文从项目经验中总结汇总已经遇到并解决的变慢原因。

参考

GBase 8a如何提高加载性能,影响性能的因素有哪些

现象

变慢周期

既然是变慢,说明一开始速度是满足要求的,是某些环节出现了变动导致变慢。变慢会导致数据挤压,查询数据的时效性变差,对现场来说始于紧急事件。

对于集群一上线就慢的,本文也有参考价值,但一般没有那么紧急。

变慢程度

变慢10-50%的,一般在可接受范围。大概率和系统负载有关。一般是逐步变慢,比如用了1年了,感觉慢了一点点,变慢的程度也不是很高。

变慢几倍到几十倍的,大概率和环境发生较大变化有关。基本是突然变慢,比如昨天还正常,今天大范围积压。

缓慢变慢的原因

磁盘占用率高

包括机械盘和SSD盘。

其中机械盘,其外圈的速度是内圈的2倍(ZDR技术),所以磁盘空间越满,性能越差。细节请参考 GBase 8a运维案例分析:在机械磁盘空间快满时性能有明显下降

对于SSD磁盘,虽然没有内外圈差异,但由于其无法覆盖写,必须先擦除,且是成片的,所以一旦磁盘空间不足,SSD固态硬盘需要不断地在各个块之间进行写入-转移-清空操作,用久了需要擦除的区块就会越多,性能自然也会变慢。

所以磁盘不要太满,建议60-70%就要考虑扩容,或者减少历史数据的保存周期。

数据量变多

用户业务不断扩展,需要处理的数据缓慢的增加了,此时一般都对应这扩容等操作。

设备老化

设备使用时间过长,比如3-5年以上。包括网线,交换机,服务器自身等等。

突然变慢的原因

如下根据加载整个数据流程,逐个分析遇到过的导致加载速度变慢的原因。

加载大致流程如下

  • 集群库连接数据源,获取数据文件数量和大小,拆分任务给几个数据分发节点
  • 每个数据分发节点连接数据源,读取自己负责的文件
  • 每个数据分发节点,根据规则,将数据发送到整个集群数据节点

如下从OS环境类故障和数据类故障两大类分别分析。

OS环境类原因

指操作系统出现了变动导致。

  • 磁盘问题
    • 负载高,长时间100%繁忙。比如部署或运行了其它程序,导致系统负载高。这其中也包括OS自带的,比如 GBase 8a集群由于文件系统磁盘检查工具AIDE导致的加载缓慢问题。如果用户近期系统有过升级,或者配置变动,都有可能导致这个情况。 通过iostat可以观察系统负载,是否存在磁盘长时间100%繁忙的情况
    • 磁盘性能差。通过iostat可以看到await超高,一般伴随着持续100%繁忙。
    • 磁盘故障。从操作系统日志/var/log/messages能看到某些数据的读取出现超时或者Input/Output Error,等文件系统报错信息。
  • CPU降频。从/proc/cpuinfo|grep MHz,可以看到其频率不是满功率,或者在持续变动。可能是开启了节能模式,或者散热不好导致。
  • 网络问题。用wget/curl获取文件,性能远低于其它机器。比如只有几百KB,几MB,而其它的是几十或几百MB。
    • 网卡降速。ethtool可以看到从万兆降到百兆。一般是网线不好,或者被触碰过导致接触问题,小概率是交换机出现问题。
    • 网卡丢包高。通过ifconfig能看到丢包情况。原因同前。
    • 网卡延迟高。用ping能看到延迟。电信级一般建议10ms以内。原因同前。

数据类原因

原始数据文件大小出现变动。

个别数据文件过大:一些数据文件是其它节点的8倍,且是不可拆分的压缩文件,导致部分分发节点加载时间比其它的长,成为瓶颈,导致整体时间变长。

数据文件变小:大量的小文件,占用更多的IO,包括网络和磁盘,非常不利与大数据加载。一般是采集端做了参数调整,或者新接入的数据源,忘了更改配置导致。

分发节点变少

分发节点数量由cluster_loader_max_data_processors参数指定。有现场没有将参数写入配置文件中。当部分管理节点重启后,出现了加载速度变慢的情况。

排查过程

查看速度变化规律

确认是持续变慢,还是偶发变慢。

查看变慢程度

是否有规律,比如和某个时间段有关,比如凌晨有背景任务。

确认是略有变慢,还是几倍几十倍的变慢。

查看加载过程

GBase 8a集群查看加载进度的方法

看是否每次最后完成的节点,是否都是来自某些分发节点,或者数据来自某些数据源节点

查看节点资源,包括数据源

重点是排查上一步怀疑的节点。如果没有重点,就所有节点都查看,是否部分节点有性能瓶颈。

iostat等查看磁盘,cpu是否繁忙,wait是否过高,磁盘是否有报错。

top等查看是否用了SWAP导致。

查看cpu是否降频

查看网卡是否降速

测试节点间网络速度

用wget,curl测试不同节点间,特别是数据库和数据源之间的速度。

Linux wget命令确认URI是否正确

比如用scp复制文件,建议别太小,比如超过200M。

查看数据据引擎状态

查看gnode的show engine express status状态,发给GBase 8a售后人员协助分析。

跟踪加载流程日志

开启日志,手工进行一次加载,复现问题。

GBase 8a集群开启集群层日志查看每个阶段的耗时

总结

加载突然变慢,一般和环境变化有关。

加速缓慢变慢,一般和使用时间长,特别是磁盘空间不充足有关。