AWS Lambdas中对JDK 11的支持是否会带来任何性能改进?特别是关于冷启动?

时间:2019-11-26 20:18:29

标签: java performance aws-lambda cold-start

对于AWS Lambdas,在冷启动方面,Java明显比其他受支持的语言慢。与JDK 8相比,JDK 11是否有任何性能增强可以改善冷启动时间?

2 个答案:

答案 0 :(得分:1)

理论上,它应该通过应用程序类数据共享,应该将启动时间减少几秒钟。引导JVM时,通过“ --Xshare:on”启用类数据共享。

aws默认为J11运行时启用“ --Xshare:on”,启用此标志的唯一原因是使用JDK附带的类列表生成归档的情况。

应用程序类的应用程序类数据共享最初是在J9上引入的,并且是一项商业功能,仅在OpenJDK 10中可用。

如果您想使用OpenJdk 11对lambda函数测试此效果,则可以运行

java -Xshare:dump

然后在$ JAVA_HOME / lib / server中,应看到jdk存档classes.jsa,如下所示

enter image description here

然后您将使用标记

运行测试
java -Xshare:on ....

并且jvm将从此存档中加载jdk类
运行本地lambda测试,此docker容器集合是一个不错的选择
https://github.com/lambci/docker-lambda

答案 1 :(得分:1)

AWS Lambda的Java 11 Runtime的冷启动比Java 8还要差。

对于小型Lamda设置(256Mb),差异约为2秒。请阅读https://medium.com/@filia.aleks/java-11-vs-8-performance-for-aws-lambda-c6e64ea6424