SageMaker端点预测遇SSLError:前10条正常后续SSL验证失败求助
SageMaker端点预测出现SSLError:EOF违反协议
问题描述
使用SageMaker训练并部署深度神经网络端点后,前10条测试数据可正常获取预测结果,但后续请求触发如下错误:
SSLError: SSL validation failed for https://runtime.s3.amazonaws.com/endpoints/[endpointName]/invocations EOF occurred in violation of protocol (_ssl.c:2396)
使用的核心代码片段:
from sagemaker.tensorflow import TensorFlowPredictor predictor = TensorFlowPredictor(endpoint_name) # 调用端点进行推理 pred = predictor.predict(input_vals) # 存储预测结果 y_pred.extend([i[0] for i in pred['predictions']])
解决方案
- 拆分批量请求:如果
input_vals是大批次数据,尝试拆分成多个小批次逐个请求。大批次数据传输时间过长可能导致SSL连接提前中断。 - 设置更长的超时时间:初始化Predictor时显式配置连接和读取超时,避免因超时触发EOF错误:
predictor = TensorFlowPredictor( endpoint_name, client_config={"connect_timeout": 60, "read_timeout": 60} # 根据实际场景调整超时秒数 ) - 升级依赖包:本地环境的
requests、urllib3等网络依赖包过旧可能存在SSL协议兼容问题,执行升级:pip install --upgrade requests urllib3 - 添加重试机制:针对SSL类错误添加自动重试逻辑,临时规避偶发的连接中断:
from tenacity import retry, stop_after_attempt, retry_if_exception_type import ssl @retry(stop=stop_after_attempt(3), retry=retry_if_exception_type(ssl.SSLError)) def safe_predict(predictor, input_data): return predictor.predict(input_data) # 使用重试函数替代直接调用 pred = safe_predict(predictor, input_vals) - 检查端点服务日志:登录AWS控制台查看SageMaker端点的CloudWatch日志,确认服务端是否存在内存不足、进程崩溃等异常,这类问题也会导致连接提前终止。
内容的提问来源于stack exchange,提问作者Tejaswi Boni
相关产品推荐
相关产品推荐

