Azure Data Factory从SAP HANA导入性能问题求助
问题:ADF SAP HANA连接器导入ADLS Gen2吞吐量过低(<2Mbit/s)
- 场景:通过Azure Data Factory(ADF)的SAP HANA连接器将SAP HANA对象导入ADLS Gen2
- 现状:吞吐量持续低于2Mbit/s,抓包发现ADF请求大量小数据包
- 已排查:排除基础设施故障(网络、ADLS/ADF节点性能等均正常);测试ADF侧可调参数「分区选项」「数据包大小(KB)」,对大视图导入速度无任何改善
- 相关配置截图:
- screen_1: ADF复制数据源设置
- screen_2: ADF复制文件详情
解决方案建议
1. 排查SAP HANA端配置限制
- 检查SAP HANA的
rsize(网络接收缓冲区)和wsize(网络发送缓冲区)参数,过小的缓冲区会导致频繁拆包,建议调整至至少65536(64KB)。可通过HANA Studio执行以下SQL查询当前配置:SELECT * FROM M_INIFILE_CONTENTS WHERE FILE_NAME = 'global.ini' AND SECTION = 'network' AND KEY IN ('rsize', 'wsize'); - 查看
M_CONNECTIONS视图,确认ADF的并发连接数是否接近HANA的连接数阈值,避免被限流。
2. 优化ADF读取逻辑
- 改用查询模式替代直接选择视图:手动编写
SELECT * FROM <目标视图名>并添加ORDER BY(指定分区键或主键),强制HANA批量输出数据,减少小数据包生成。 - 若视图包含大量实时计算逻辑,先在SAP HANA端将视图数据预加载到物理表,再通过ADF读取物理表——实时计算易触发小数据包拆分,预存为物理表可规避此问题。
3. 调整集成运行时配置
- 若使用自托管集成运行时(SHIR),开启服务器TCP自动调优:Windows环境执行
netsh int tcp set global autotuninglevel=normal,Linux环境调整sysctl的TCP相关参数,避免操作系统层面限制数据包大小。 - 增加SHIR节点数量,通过横向扩展提升并发读取能力,分散单节点的数据包处理压力。
4. 优化ADLS Gen2写入设置
- 确认ADLS存储账户已开启分层命名空间,未开启会影响批量写入性能;同时在Azure门户查看存储账户的“写入吞吐量”“请求数”指标,确认是否接近配额上限。
- 将ADF复制活动的写入模式改为批量写入,合并小数据包后再写入ADLS,减少频繁小文件写入操作。
5. 排查跨网络路径限制
- 检查中间防火墙、VPN网关是否限制了TCP MSS值,部分设备默认限制MSS会导致数据包被强制拆分,建议将MSS调整至1460(适配Azure网络MTU)。
- 若使用ExpressRoute,确认带宽是否被其他业务占用,预留足够带宽给ADF数据流。
内容的提问来源于stack exchange,提问作者VJ87
相关产品推荐
相关产品推荐

