我正在尝试为在 GKE 中运行的应用程序安装 GCP 性能分析器代理,请按照此处的说明进行操作:https://cloud.google.com/profiler/docs/profiling-java
我无法克服此错误。有人可以帮忙吗?
找不到代理库/opt/cprof/profiler_java_agent.so 绝对路径,但有错误:重新定位时出错/opt/cprof/profiler_java_agent.so: __pthread_key_create: initial-exec TLS 解析为动态定义/opt/cprof/profiler_java_agent.so
这是 Dockerfile
FROM openjdk:8-jdk-alpine
RUN apk update && apk add --no-cache gcompat
RUN apk update && apk add --no-cache libc6-compat
WORKDIR /app
# The application's jar file
ARG JAR_FILE=target/example-svc-*.jar
# Add the application's jar to the container
ADD ${JAR_FILE} example-svc.jar
EXPOSE 5050
RUN mkdir -p /opt/cprof &&
wget -q -O- https://storage.googleapis.com/cloud-profiler/java/latest/profiler_java_agent.tar.gz
| tar xzv -C /opt/cprof
ENTRYPOINT ["java",
"-agentpath:/opt/cprof/profiler_java_agent.so=-cprof_service=example-svc,-cprof_service_version=0.0.1-SNAPSHOT",
"-jar", "/app/example-svc.jar"]
问题似乎是您正在使用的容器映像的基本版本。 查看您的 Dockerfile,您从:
openjdk:8-jdk-alpine
深入研究这方面的文档,我们发现:
需要注意的主要警告是,它确实使用了musl libc而不是glibc。 和朋友,因此某些软件可能会遇到问题,具体取决于 其 libc 要求的深度。
(参考资料:openjdk(
现在,如果我们查看此处找到的Google文档,我们会发现定义了以下要求:
支持的操作系统:
- Linux 版本,其标准 C 库是用 glibc 实现的。
。这似乎是一个冲突。 请尝试使用不基于alpine
的 openjdk 映像的备用版本。