【Azure 应用服务】App Service中抓取 Web Job 的 DUMP 办法

简介: 【Azure 应用服务】App Service中抓取 Web Job 的 DUMP 办法

问题描述

使用Azure App Service,也可以部署一个Java程序作为Web Job运行。运行一个 .Jar 文件只需要以下4步:

1)把Java应用打包成一个 .jar 文件

2)创建一个 run.bat文件,并在文件中设置PATH 和 java -jar运行命令,内容如下:

1

2

set PATH=%PATH%;%JAVA_HOME%/bin

java -jar filename.jar

3)把 run.bat 和 .jar文件打包为一个 .zip 文件。

4)在App Service的Web Job页面中创建Job后,上传 .zip 文件。

如何在App Service中创建 Web Job可以参考官网: https://docs.azure.cn/zh-cn/app-service/webjobs-create#overview

 

在创建 Java .jar的web job成功运行后,在App Service的CPU监控中发现,实例CPU一直处于100%。如何来定位到具体线程?发现具体的故障呢?答案是:需要抓取消耗CPU高的进程的DUMP文件。本文就是介绍如何在App Service中,抓取Java版Web Job的DUMP文件

 

问题分析

因为Java的DUMP文件需要在JDK的运行环境中才能通过 jstack  命令来抓取,而App Service默认使用的是 jre。在App Service的高级管理工具(Kudu)可以查看到当前的Java_Home查看到所使用的Jre版本。

 

 

所以第一步就是需要修改Java的运行时版本。

 

第一步:需要修改run.bat文件,使用JDK来运行Java Web Job。把此前所使用的相对路径(依赖JAVA_HOME)变为绝对路径

"D:\Program Files\Java\jdk1.8.0_172\bin\java.exe" -jar filename.jar

 

第二步:等待 .jar Web Job运行后,到进程浏览器中查询相关java进程的id (注意是web job的javb 进程)。

 

(如上图中显示,Web Job的Java进程号为12996)

第三步:进入到 Logfiles 目录下,使用以下命令抓取 DUMP,查看进程内部的线程情况(输出内容在thread.txt文件中)。

"C:\Program Files\Java\jdk1.8.0_172\bin\jstack" 12996 >> D:\home\LogFiles\thread.txt

 

 

参考资料

在 Azure 应用服务中使用 WebJobs 运行后台任务: https://docs.azure.cn/zh-cn/app-service/webjobs-create#overview

Uploading a JAR file as WebJob in a WebApphttps://social.msdn.microsoft.com/Forums/azure/en-US/65669732-14f1-431a-b74a-36630bf800a4/uploading-a-jar-file-as-webjob-in-a-webapp?forum=windowsazurewebsitespreview

Executing Java Web Jobs on Azure: https://docs.microsoft.com/zh-cn/archive/blogs/azureossds/executing-java-web-jobs-on-azure

如何为 Web 应用配置自定义 Tomcat 环境https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-app-service-web-howto-configure-custom-tomcat-environment

相关文章
|
4月前
|
Java 应用服务中间件 API
【App Service】部署War包到Azure云上遇404错误
Java应用部署至Azure App Service for Windows后报404,本地运行正常。经排查,日志提示类文件版本不兼容:应用由Java 17(class file version 61.0)编译,但环境仅支持到Java 11(55.0)。错误根源为Java版本不匹配。调整App Service的Java版本至17后问题解决,成功访问接口。
217 1
|
4月前
|
存储 Linux 网络安全
【Azure App Service】Root CA on App Service
Azure App Service for Windows应用连接外部SSL服务时,需确保其证书由受信任的根CA颁发。多租户环境下无法修改根证书,但ASE(单租户)可加载自定义CA证书。若遇证书信任问题,可更换为公共CA证书或将应用部署于ASE并导入私有CA证书。通过Kudu的PowerShell(Windows)或SSH(Linux)可查看当前受信任的根证书列表。
124 13
|
5月前
|
网络协议 Java Linux
【App Service】在Azure环境中如何查看App Service实例当前的网络连接情况呢?
在 Azure App Service(Windows 和 Linux)中部署应用时,分析网络连接状态是排查异常、验证端口监听及确认后端连接的关键。本文介绍如何在 Linux 环境中使用 `netstat` 命令查看特定端口(如 443、3306、6380)的连接情况,并解析输出结果。同时说明在 Windows App Service 中 `netstat` 被禁用的情况下,如何通过门户抓包等替代方法进行网络诊断。内容涵盖命令示例、操作步骤及附录说明,帮助开发者快速掌握云环境中的网络分析技巧。
154 11
|
开发工具 数据安全/隐私保护 安全
远程调试 Azure Web App
当我们将 Web App 部署在 Azure 上时,如果能够实现远程调试,将会极大的提高我们修复 bug 的效率。Visual Studio 一贯以功能强大、易用著称,当然可以实现基于 Azure 应用的创建、发布和调试。
1267 0
|
4月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
850 139
|
4月前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
429 137