来自 AWS Lambda 的 JVM GC 日志记录?

JVM GC logging from AWS Lambda?

任何人都可以建议一个适用的策略来记录 AWS Lambda 执行中的 GC 事件吗?

我正在研究尽可能接近 -XX:+PrintGC 类日志记录的东西,但由于我无法真正将任何启动参数发送到 lambda JVM 进程,似乎唯一的方法是通过实时JMX 自省?如果那是唯一的方法,适用于 AWS Lambda 的任何库或标准化方法(不幸的是,依赖于 运行 过程的工具,如 VisualVM 是不可能的)?

在jdkbin目录下使用jvisualvm。这是一个很棒的工具

我不熟悉 AWS Lambda,但如果您正在寻找 JMX 自省 您可以通过下面的 link 找到代码示例。

https://github.com/aragozin/jvm-tools/blob/master/sjk-core/src/main/java/org/gridkit/jvmtool/MBeanGCMonitor.java

遗憾的是,JMX 信息不如 GC 日志丰富,但可以获取一些信息,例如每代内存动态。

它不适用于所有可用参数,但您可以在 AWS lambda 中设置 JAVA_TOOL_OPTIONS 环境变量来传递此类标志。例如,我经常传递“-verbose:class”来调试糟糕的冷启动性能。