AWS Glue Python Shell任务报Internal service error故障排查咨询
AWS Glue Python Shell 内部服务错误排查方案
可能的故障原因
- 资源不足:Glue Python Shell默认1 DPU(4vCPU/16G内存)、10G临时磁盘,pandas处理大数据量时触发OOM或磁盘占满,Glue底层会将这类异常包装为
Internal service error,不会输出详细堆栈 - S3访问异常:跨区域访问S3延迟过高、IAM角色缺少S3对象/KMS加密的访问权限、VPC内S3 endpoint配置错误,间歇性网络/权限故障触发服务内部报错
- 依赖版本冲突:本地使用的pandas、s3fs等依赖版本与Glue Python Shell默认环境版本不兼容,隐性运行时崩溃被捕获为内部服务错误
- 作业配置错误:默认作业超时阈值设置过低,或同时运行的作业数超过账号配额,触发服务端限流报错
排查与解决步骤
- 调整资源配置:先将作业DPU升级为2,临时磁盘空间可通过定期清理临时文件优化,同时将作业超时时间调整为大于本地运行最长耗时的2倍
- 开启DEBUG级日志:在作业配置中开启连续日志记录,日志级别设置为DEBUG,关联CloudWatch观测
MemoryUsage、DiskUsage运行指标,确认是否存在资源耗尽的情况 - 验证S3访问链路:
- 先运行最简测试作业,仅包含S3文件读写逻辑,不执行pandas数据处理,排除S3访问层问题
- 检查作业IAM角色权限,确保覆盖S3桶读写、KMS解密(如S3开启服务端加密)的相关权限
- 如作业运行在VPC内,确认S3 endpoint路由、安全组出站规则配置正确,无端口/IP限制
- 对齐依赖版本:在作业开头加入指定版本依赖安装命令,和本地运行环境版本保持一致,示例:
%pip install pandas==1.5.3 s3fs==2023.4.0 numpy==1.23.5
- 优化pandas处理逻辑:大文件处理采用分块读取方式,避免全量数据一次性加载到内存,减少中间临时对象的生成,处理完成后及时调用
del释放无用对象内存 - 小数据量验证:裁剪输入数据为原大小的10%以内运行作业,如小数据量可正常完成,即可定位为资源不足导致的异常,可继续扩容DPU或进一步优化代码内存占用
内容的提问来源于stack exchange,提问作者Ludwig
相关产品推荐
相关产品推荐

