You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:14:51