如果您想要远程诊断部署在SAE上的应用,可以使用SAE远程调试功能。SAE目前仅支持Java应用的远程调试。

配置Java应用远程调试

  1. 登录SAE控制台
  2. 在左侧导航栏单击应用列表,在应用列表页面上方选择地域,单击具体应用名称。
  3. 在应用详情页面的右上角,单击部署应用
  4. 部署应用页面下方,展开启动命令设置区域,设置启动命令。设置完成后单击确认
    启动命令所需的参数,因创建Java应用时选择的应用部署方式不同而有所差异。
    • 镜像启动命令设置_镜像

      ENTRYPOINT: [nginx, '-g', 'daemon off;']为例,参数说明如下。

      参数 说明
      启动命令 输入启动命令,例如nginx
      启动参数 输入启动参数,例如-g

      单击+添加,可以在新的参数行中增加输入参数daemon off

      关于镜像配置参数的更多信息,请参见设置镜像部署应用的启动命令

    • WAR包部署启动命令设置_WAR包

      参数说明如下。

      参数 说明
      系统默认启动命令 SAE默认的启动命令。
      options设置 配置JVM参数。请配置以下命令:
      -agentlib:jdwp=transport=dt_socket,address=9000,server=y,suspend=n
      • transport:远程调试间的数据传输方式。
      • address:远程调试的端口,与开启远程调试时设置的调试端口保持一致。如果Java环境Dragonwell 11,请输入address=*:[端口],例如address=*:[9000]
      注意 以WAR包方式部署应用的启动命令与JAR包方式部署应用的启动命令不同,请您不要共用启动命令。
      options快捷设置:只有Java环境Dragonwell时可以设置。
      开启微服务性能提升(Wisp 2协程) 默认开启,开启后可以提升运行时多线程性能。
      开启应用内存优化(G1) 默认开启,开启后可以针对多CPU与大容量内存场景,降低GC时间,适用于GC需要优化、大数据等场景。
      开启应用启动加速(Quickstart) 只有Java环境Dragonwell 11时可以设置。选中开启应用启动加速(Quickstart)并设置持久化目录后,可以提升应用启动效率。
      注意 开启应用启动加速前,需要先设置NAS存储。具体操作,请参见设置NAS存储
      持久化目录 开启应用加速后需要设置,设置的持久化目录推荐为NAS存储的目录或者子目录,达到跨实例间的加速效果。关于如何设置NAS存储,请参见设置NAS存储
    • JAR包部署
    启动命令设置_JAR包

    参数说明如下。

    参数 说明
    系统默认启动命令 SAE默认的启动命令。
    options设置 配置JVM参数。请配置以下命令:
    -agentlib:jdwp=transport=dt_socket,address=9000,server=y,suspend=n
    • transport:远程调试间的数据传输方式。
    • address:远程调试的端口,与开启远程调试时设置的调试端口保持一致。如果Java环境Dragonwell 11,请输入address=*:[端口],例如address=*:[9000]
    注意 以WAR包方式部署应用的启动命令与JAR包方式部署应用的启动命令不同,请您不要共用启动命令。
    args设置 配置标准输出和错误输出的重定向命令,例如1>>/tmp/std.log>&1
    options快捷设置:只有Java环境Dragonwell时可以设置。
    开启微服务性能提升(Wisp 2协程) 默认开启,开启后可以提升运行时多线程性能。
    开启应用内存优化(G1) 默认开启,开启后可以针对多CPU与大容量内存场景,降低GC时间,适用于GC需要优化、大数据等场景。
    开启应用启动加速(Quickstart) 只有Java环境Dragonwell 11时可以设置。选中开启应用启动加速(Quickstart)并设置持久化目录后,可以提升应用启动效率。
    注意 开启应用启动加速前,需要先设置NAS存储。具体操作,请参见设置NAS存储
    持久化目录 开启应用加速后需要设置,设置的持久化目录推荐为NAS存储的目录或者子目录,达到跨实例间的加速效果。关于如何设置NAS存储,请参见设置NAS存储
    注意 单击确认后,该应用将会被重启,请在业务较少的时间段部署。
  5. 设置启动命令后,在基本信息页面的左侧导航栏,单击远程调试(仅支持Java)
  6. 远程调试(Java)页面,打开开启远程调试开关,单击远程调试设置
    开启SAE远程调试功能
  7. 远程调试设置面板中,设置远程调试参数,单击确定
    设置远程调试

    远程调试参数说明如下。

    参数 说明
    请选择公网SLB 选择SLB完成本地与远程实例的连接。如果您之前没有创建过SLB,您可以选择新建SLB来创建SLB进行连接。关于SLB的详细说明,请参见什么是传统型负载均衡CLB
    注意 使用SLB时会产生额外费用,SLB的计费方式,请参见按量计费
    调试端口 输入步骤4中设置应用启动命令时配置的address调试端口。
    远程调试指定实例 选择需要远程调试的实例。
    说明 只有运行状态Running的实例才可以设置远程调试。
    远程实例设置完成后,页面自动进入变更详情页面,查看实例是否连接成功。远程实例发布单v2执行状态执行成功时,说明实例已经成功连接。
  8. 在左侧导航栏单击远程调试(仅支持Java),获取远程调试IP及端口信息,对应用进行远程诊断。
    查看远程调试实例IP及端口v2
如果您对端口配置了健康检查,调试时需要把IntelliJ IDEA的断点设置为Thread,否则会导致健康检查失败。更多信息,请参见设置健康检查db_set_suspend_thread_in_IDEA
注意 长时间开启远程调试可能存在数据泄露等风险,因此远程诊断完后请及时关闭开启远程调试开关,在弹出的确认解绑远程Debug对话框中单击确定,关闭远程调试功能。

修改远程调试设置

SAE一次仅支持一个应用的远程调试,如果您需要远程调试其他应用,请修改远程调试设置。

注意 修改远程调试设置前,请先确保需要远程调试的应用已设置启动命令。关于如何设置启动命令,请参见配置Java应用远程调试
  1. 登录SAE控制台
  2. 在左侧导航栏单击应用列表,在应用列表页面上方选择地域,单击具体应用名称。
  3. 基本信息页面的左侧导航栏,单击远程调试(仅支持Java)
  4. 远程调试(Java)页面,单击修改远程调试设置。在远程调试设置面板中修改设置信息,单击确定
    修改远程调试设置

    修改远程调试的参数说明如下所示。

    参数 说明
    调试端口 输入步骤4中设置应用启动命令时配置的address调试端口。
    远程调试指定实例 选择需要远程调试的实例。
    说明 只有运行状态Running的实例才可以设置远程调试。
    远程实例设置完成后,页面自动进入变更详情页面,查看实例是否连接成功。远程实例发布单v2执行状态执行成功时,说明实例已经成功连接。
  5. 在左侧导航栏单击远程调试(仅支持Java),获取远程调试IP及端口信息,对应用进行远程诊断。
    查看远程调试实例IP及端口v2
注意 长时间开启远程调试可能存在数据泄露等风险,因此远程诊断完后请及时关闭开启远程调试开关,在弹出的确认解绑远程Debug对话框中单击确定,关闭远程调试功能。

验证远程调试结果

您可以通过应用的变更记录查看远程调试是否成功开启或关闭。

  1. 登录SAE控制台
  2. 在左侧导航栏单击应用列表,在应用列表页面上方选择地域,单击具体应用名称。
  3. 基本信息页面的左侧导航栏,单击变更记录
    SAE应用变更记录
    变更记录说明如下所示:
    • 绑定SLB成功说明远程调试已成功连接。
    • 解绑SLB成功说明远程调试已成功关闭。

问题反馈

如果您在使用SAE过程中有任何疑问,欢迎您扫描下面的二维码或搜索钉钉群号32874633,加入钉钉群与我们交流。SAE_QR_code_3