我已经部署了一个 micronaut lambda 原生镜像作为 AWS Lambda。但是当我进行测试时,出现以下错误
INIT_START Runtime Version: provided:al2.v16 Runtime Version ARN: arn:aws:lambda:eu-west-1::runtime:a877059c39f5d33441dc2aac00a8beba450c75fa8d69c4c71e7de2cca4659967
error: Could not find option 'MaxPermSize'. Use -XX:PrintFlags= to list all available options.
RequestId: 9db49a67-91a6-4442-a446-e6f905c20415 Error: Runtime exited with error: exit status 1
Runtime.ExitError
基本上尝试过的例子来自 https://guides.micronaut.io/latest/mn-application-aws-lambda-graalvm-gradle-java.html
我在使用通过 sdk 安装的 graalvm jvm 22.3.r11-grl 时在 Ubuntu 机器上构建了本机映像。然后将生成的 zip 文件上传为 AWS Lambda 代码。
使用以下命令构建原生镜像
./gradlew buildNativeLambda
我所做的唯一改变是我将“-XX:MaxPermSize=2048m”添加到 dockerfileNative 任务,因为我没有足够的内存来构建图像。
tasks.named("dockerfileNative") {
args(
"-XX:MaxPermSize=2048m",
"-XX:MaximumHeapSizePercent=80",
"-Dio.netty.allocator.numDirectArenas=0",
"-Dio.netty.noPreferDirect=true"
)
}
以下是构建输出的片段,它开始使用 graalvm docker 图片。
Step 1/27 : FROM amazonlinux:latest AS graalvm
---> ee4570b57b03
Step 2/27 : ENV LANG=en_US.UTF-8
---> Using cache
---> ab5229640881
Step 3/27 : RUN yum install -y gcc gcc-c++ libc6-dev zlib1g-dev curl bash zlib zlib- devel zlib-static zip tar gzip
---> Using cache
---> 0b8b8090b0d2
Step 4/27 : RUN curl -4 -L https://github.com/graalvm/graalvm-ce- builds/releases/download/vm-22.3.0/graalvm-ce-java11-linux-amd64-22.3.0.tar.gz -o /tmp/graalvm-ce-java11-linux-amd64-22.3.0.tar.gz
---> Using cache
---> a0056de925cc
Step 5/27 : RUN tar -zxf /tmp/graalvm-ce-java11-linux-amd64-22.3.0.tar.gz -C /tmp && mv /tmp/graalvm-ce-java11-22.3.0 /usr/lib/graalvm
---> Using cache
---> 7b50cdea62fd
Step 6/27 : RUN rm -rf /tmp/*
---> Using cache
---> 232bc6614199
Step 7/27 : RUN /usr/lib/graalvm/bin/gu install native-image
---> Using cache
---> 0ce1b965d4a2
Step 8/27 : CMD ["/usr/lib/graalvm/bin/native-image"]
---> Using cache
---> 8c6372d00800
Step 9/27 : ENV PATH=/usr/lib/graalvm/bin:${PATH}
---> Using cache
---> e062c02ff7e8
Step 10/27 : FROM graalvm AS builder
---> e062c02ff7e8
Step 11/27 : WORKDIR /home/app
---> Using cache
---> 8f3313de18d7
Step 12/27 : COPY layers/libs /home/app/libs
在 Lambda 中,我还添加了 env var 作为
JAVA_TOOLS_OPTIONS -XX:MaxPermSize=2048m
但是这个连续抛出同样的错误。有人可以帮忙吗?