StorageGRID - S3 Select 查询期间客户端超时
适用于
- StorageGRID 11.8 和 11.9
- Amazon Web Services (AWS) SDK for Java v1
- S3 Select API
问题
- S3 Select 针对大型 csv 对象的查询在客户端超时,并导致错误 500,特别是对于具有数百万行或大文件大小的对象(例如,5GB,1400 万行)。
- 使用 AWS SDK for Java v1 时会发现此问题。
- 在查询完成并返回来自 GRID 的响应之前,客户端应用程序达到超时并断开连接。
检查存储节点上的 bycast-err.log 显示以下错误:
Oct 28 15:51:45 nodename ADE: |12470336 1213087561 S3RQ PSHD 2025-10-28T15:51:45.519425| ERROR 1828 73b605873a4948b1 S3RQ: S3 request error (after response): connection=connection_id, Resource=/bucket/object_name.csv?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=<somecredential>%2F20251028%2Fus-east-1%2Fs3%2Faws4_requestX-Amz-Expires=10800x-ntap-bypass-host-check=1&X-Amz-Signature=<somesignature>, HTTP Method=GET, HTTP Status Code (not sent)=500, ErrorMsg=InternalError, ErrorType=Internal, CustomErrorMessage={<none>}, Details={asyncPush error: no consumer}使用 aws cli v1 的示例错误消息:
aws s3api select-object-content --bucket demo --key object_name.csv --endpoint http://enpoint.url:port --expression "SELECT * FROM S3Object WHERE product = 'someproduct'" --expression-type SQL --input-serialization '{"CSV": {"FileHeaderInfo": "USE"}}' --output-serialization '{"CSV": {}}' output.csv --no-verify-sslRead timeout on endpoint URL: "http://endpoint.url:port/bucket/object_name.csv?select&select-type=2"在 podman 日志中,注意到"
NOTICE - Parsing query"和"INFO - Starting HTTP response with code 200"之间的差距 > 60 秒(默认 aws cli 客户端超时)。podman -r logs <container_id>[2025-10-28T15:49:51] [/build/src/libs/sql_processing/Parser.cc:141] NOTICE - Parsing query 'SELECT * FROM S3Object WHERE product = 'someproduct''[...][2025-10-28T15:51:45] [/build/src/libs/output_stream/OutputStream.cc:222] INFO - Starting HTTP response with code 200