如何在运行 java 应用程序的弹性 beanstalk 应用程序上启用 java 调试?

Posted

技术标签:

【中文标题】如何在运行 java 应用程序的弹性 beanstalk 应用程序上启用 java 调试?【英文标题】:How can I enable java debug on an elastic beanstalk application running a java application? 【发布时间】:2017-12-03 20:02:28 【问题描述】:

在运行弹性 beanstalk java 应用程序(不是 tomcat)时,如何启用远程调试?

AWS documentation 通过指定启动 java 进程的命令,展示了如何为应用程序实现它。

但如果我想单独部署 SAME 应用(例如 dev 和 prod 部署),并且只想为 dev 启用远程调试,如何实现?

【问题讨论】:

【参考方案1】:

这可以通过使用_JAVA_OPTIONS 环境变量来实现,如here 所述。

环境变量的名称可能因JVM供应商而异,但目前elastic beanstalk使用的是OpenJDK,它尊重_JAVA_OPTIONS

[webapp@ip-XXXXXXX ~]$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

您只能在您希望启用调试的弹性 beanstalk 环境中设置此环境变量。例如

_JAVA_OPTIONS=-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=5001,suspend=n

注意事项:

您选择的端口必须在该弹性 beanstalk 环境配置中分配给您的实例的安全组之一中打开。 如果您只在弹性 beantalk 中运行一个实例,这种方法效果最好,如果您运行多个实例,那么您将不知道将调试器附加到哪个实例。

【讨论】:

【参考方案2】:

我认为您可以为 Eclipse 使用 aws 工具插件 https://aws.amazon.com/eclipse/

勾选并保存将允许用户远程调试。

或在 AWS 控制台 > Elastic Beanstalk > 配置 > JVM 选项中更改

以上是JDK5之前的JDK

对于 JDK8: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8787

【讨论】:

以上是关于如何在运行 java 应用程序的弹性 beanstalk 应用程序上启用 java 调试?的主要内容,如果未能解决你的问题,请参考以下文章

如何在运行 java 应用程序的弹性 beanstalk 应用程序上启用 java 调试?

找不到 JRE(弹性)

如何保持弹性搜索在 Linux 服务器上运行

如何在弹性 beantalk 配置上运行 wget cron 命令

如何从 cli 本地连接到现有的弹性 beanstalk 实例?

如何在弹性平衡器等负载平衡器后面设置双 http 和 https 服务器