本文介绍GBase 8a MPP数据库在加载ftp数据源时,出现425 Failed to establish connection报错的问题分析。
问题描述
在某应用场景中,每天凌晨开始使用ftp加载大约300张表。但是,使用过程中发现每天约20张表加载报错,报错信息由于FTP的425 Failed to establish connection,重试加载可以成功。现场网络拓扑中,集群与FTP源跨交换机,并且有硬件防火墙。
执行SQL:
load data infile ftp://gbase:gbase@192.168.8.127/opt/data/A0000001.AVL failed with error
报错信息:
GBase internal error: I/O operation on ftp://gbase:gbase@192.168.8.127/opt/data/A0000001.AVL failed with error - FTP: couldn’t retrieve (RETR failed), 425 Failed to establish connection.
排查
- 打开集群trace日志,提高trace日志等级
根据gnode安装目录下的log/express.log日志中,ftp详细的连接过程信息发现,登录FTP数据服务器是正常的,只有在读取数据的时候才会出错,怀疑vsftpd服务有问题。 - 监控vsftpd进程情况,监控系统打开文件数
根据监控信息,发现出问题时vsftpd进程数不多,系统打开文件数也没有达到系统上限,排除资源瓶颈的问题。 - 现场替换带debug信息的vsftpd程序
通过分析vsftpd中的debug信息发现,ftp建立数据读取连接,accept()返回-1,errno错误码为4(Interruptd System Call)。根据该信息,并结合网上查询到的信息,怀疑与网络质量有关
验证
- 找一台与问题FTP在同一网段的机器做FTP数据服务器进行测试
加载同样报错。排除网络硬件问题,因为两台FTP服务器的网络硬件同时坏的概率很低 - 在集群内找一个节点做FTP数据服务器进行测试
加载没有报错。说明报错问题不在于集群,而在FTP端,同时说明FTP报错与网络有关 - 使用tcpdump抓取FTP服务器节点的网络数据包
通过统计分析FTP所在节点的网络抓包数据,显示出FTP服务器的网络质量比较差。有大量的Retransmission(重传),out-of-order(乱序),previous segment not captured(丢包),出错包占总包数的比例高达66%。

解决方案
通过检查网络部署和配置,确认是防火墙硬件的问题。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




