Ubuntu容器中gRPC服务调用KVS Producer JNI超时(StatusCode:0xf)求助
AWS Kinesis Video Streams Producer JNI 超时问题(gRPC容器中失败,REST容器正常)
问题现象
在运行gRPC服务的Ubuntu容器中,AWS Kinesis Video Streams Producer JNI始终在输出Creating Kinesis Video stream日志约15秒后,触发producer stream creation time out StatusCode: 0xf错误并释放流;而同仓库、同JNI .so文件、同区域/凭证的REST服务可正常工作。
已验证项
- gRPC容器中JNI库加载成功(通过
System.loadLibrary("KinesisVideoProducerJNI")测试验证); - 容器 outbound网络正常,
curl -v https://kinesisvideo.us-east-1.amazonaws.com可成功完成TLS握手,DNS解析与通用 outbound连通性无异常; - 两个服务使用完全相同的
libKinesisVideoProducerJNI.so文件; - 架构为x86_64(在ARM64 macOS主机上通过
--platform=linux/amd64强制容器架构); - REST容器可端到端正常流传输至KVS;
- 已修复gRPC handler协议问题(避免在
onError后发送onNext/onCompleted),但超时问题仍存在。
环境信息
- Spring Boot 3.5.3(Java 17运行时;也尝试过JRE 21基础镜像)
- gRPC Java 1.72.0;Spring gRPC 0.9.0
- KVS Producer SDK for Java (JNI):
com.amazonaws:amazon-kinesis-video-streams-producer-sdk-java:1.12.2 - Docker运行于macOS ARM64主机,强制容器架构为
linux/amd64 - 尝试过的基础镜像:Ubuntu 22.04 和 24.04
- 两个服务使用相同的流名称、区域及凭证
Dockerfile
# grpc/VideoStreamGrpc/Dockerfile FROM ubuntu:22.04 RUN apt-get update && apt-get install -y \ openjdk-21-jre-headless \ wget curl ca-certificates \ gcc \ libssl-dev \ libcurl4-openssl-dev \ liblog4cplus-dev \ gstreamer1.0-tools \ gstreamer1.0-plugins-base \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-bad \ gstreamer1.0-plugins-ugly \ gstreamer1.0-libav \ libnghttp2-14 \ libstdc++6 libgcc-s1 zlib1g \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY target/*.jar app.jar # Same native JNI used in both services COPY src/main/resources/ubuntu /app/lib ENV LD_LIBRARY_PATH=/app/lib EXPOSE 9090 5005 ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005", "-Djava.library.path=/app/lib", "-jar", "app.jar"]
已尝试的解决方案(均未解决超时问题)
- 更换基础镜像为Ubuntu 22.04和24.04;
- 安装所有依赖库:libssl-dev、libcurl4-openssl-dev、liblog4cplus-dev、libnghttp2-14、GStreamer相关组件及工具链依赖;
- 配置
LD_LIBRARY_PATH=/app/lib与-Djava.library.path=/app/lib; - 通过系统属性与
log4cplus.properties开启Producer SDK的TRACE/DEBUG日志,但仅能看到创建流与超时日志,无更深层HTTP/2细节; - 修复ENTRYPOINT类路径问题,避免
-cp与-jar混用; - 确认gRPC服务可正常启动并提供服务。
目前仍无法定位超时原因,恳请各位提供技术帮助,谢谢!
内容的提问来源于stack exchange,提问作者OptimusPrime
相关产品推荐
相关产品推荐

