Max*_*val 13 amazon-web-services aws-lambda
我意识到我需要为AWS Lambda函数分配比所需内存更多的内存,否则我得到:
{
"errorMessage": "Metaspace",
"errorType": "java.lang.OutOfMemoryError"
}
Run Code Online (Sandbox Code Playgroud)
例如,我有一个分配了128MB的Lambda函数,它会随着该错误一直崩溃,而在控制台中它会显示"最大内存使用56 MB".
然后我分配256MB,它不再崩溃,但它总是给我一个75到85MB之间的"最大内存使用".
怎么会?谢谢.
jst*_*ell 11
分配给java lambda函数的内存量由堆,元和保留代码内存共享.
容器为分配256M的函数执行的java命令类似于:
java -XX:MaxHeapSize=222823k -XX:MaxMetaspaceSize=26214k -XX:ReservedCodeCacheSize=13107k -XX:+UseSerialGC -Xshare:on -XX:-TieredCompilation -jar /var/runtime/lib/LambdaJavaRTEntry-1.0.jar
Run Code Online (Sandbox Code Playgroud)
222823k + 26214k + 13107k = 256M
容器为分配384M的函数执行的java命令就像
java -XX:MaxHeapSize=334233k -XX:MaxMetaspaceSize=39322k -XX:ReservedCodeCacheSize=39322k -XX:+UseSerialGC -Xshare:on -XX:-TieredCompilation -jar /var/runtime/lib/LambdaJavaRTEntry-1.0.jar
Run Code Online (Sandbox Code Playgroud)
334233k + 39322k + 39322k = 384M
所以,公式似乎是
85%堆+ 10%meta + 5%保留代码缓存= 100%配置的功能内存
老实说,我不知道如何计算Cloudwatch日志中报告的"Max Memory Used"值.它与我所看到的任何东西都不一致.
| 归档时间: |
|
| 查看次数: |
2418 次 |
| 最近记录: |