【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

相关文章
|
2月前
|
域名解析 网络协议 API
【Azure Container App】配置容器应用的缩放规则 Managed Identity 连接中国区 Azure Service Bus 问题
本文介绍了在 Azure Container Apps 中配置基于自定义 Azure Service Bus 的自动缩放规则时,因未指定云环境导致的域名解析错误问题。解决方案是在扩展规则中添加 `cloud=AzureChinaCloud` 参数,以适配中国区 Azure 环境。内容涵盖问题描述、原因分析、解决方法及配置示例,适用于使用 KEDA 实现事件驱动自动缩放的场景。
|
5月前
|
存储 安全 数据安全/隐私保护
【Azure Function App】在Function App中使用System Managed Identity访问Storage Account
本文介绍了如何在Azure Function中使用托管身份(Managed Identity)替代AzureWebJobsStorage连接函数应用到存储账户,以提高安全性并减少Access Key的使用。具体步骤包括:1) 启用系统分配的身份;2) 为函数应用授予存储访问权限,添加必要角色(如Storage Blob Data Contributor);3) 配置`AzureWebJobsStorage__blobServiceUri`参数指定Blob Service Uri。完成后删除旧配置,即可通过Managed Identity访问Storage Account。
150 19
|
4月前
|
数据采集 Web App开发 JavaScript
基于Selenium的Python爬虫抓取动态App图片
基于Selenium的Python爬虫抓取动态App图片
320 68
|
3月前
|
Linux Shell 网络安全
【Azure App Service】使用 tcpping 来获取App Service的网络状态并把结果保存到文本文件中
本文针对云服务使用中网络状态抖动的问题,以Azure App Service为例,介绍如何利用其自带的`tcpping`工具检测网络连通性。通过在Windows或Linux版App Service中执行`tcpping`命令,将结果输出至文本文件,分析timeout行数以判断网络抖动的时间点。文章还提供了具体操作步骤、效果图及参考资料,帮助用户高效排查网络问题。
163 47
|
2月前
|
Java Shell Maven
【Azure Container App】构建Java应用镜像时候遇无法编译错误:ERROR [build 10/10] RUN ./mvnw.cmd dependency:go-offline -B -Dproduction package
在部署Java应用到Azure Container App时,构建镜像过程中出现错误:“./mvnw.cmd: No such file or directory”。尽管项目根目录包含mvnw和mvnw.cmd文件,但依然报错。问题出现在Dockerfile构建阶段执行`./mvnw dependency:go-offline`命令时,系统提示找不到可执行文件。经过排查,确认是mvnw文件内容异常所致。最终通过重新生成mvnw文件解决该问题,镜像成功构建。
|
2月前
|
网络协议 API 网络安全
【Azure Function App】发现部分请求Function App遇见 403.72 报错(请求Body>100KB)
在调用Azure Function的HTTP Trigger时,发送POST请求偶尔出现403错误,且响应为空、Header信息少。经排查发现,当请求Body大于100KB时会触发403.72错误,原因是启用了“Client Certificate mode”为“Optional Interactive User”。解决方法是将该模式设置为“Ignore”。由于TLS重新协商机制限制,大请求体无法正常处理,导致此问题。
111 2
|
4月前
|
安全 Linux 开发工具
【Azure Function】分享把Function App从.NET 6.0升级到.NET 8.0 Isolated的步骤
本文介绍了将Azure Function App从.NET 6.0升级到.NET 8.0 Isolated的步骤。.NET 6.0作为长期支持版本,生命周期至2024年11月结束。为确保持续支持,建议升级至更新版本。升级步骤包括安装.NET 8 SDK、更新Azure Functions Core Tools、修改项目文件目标框架为net8.0、更新兼容的NuGet包、本地测试以及重新发布到Azure。更多详细信息可参考官方文档。
200 9
|
4月前
|
API Go 网络架构
【Azure Logic App】特殊的方法来停止正常步骤无法停止的Workflow Job
本文介绍了一种特殊方法,用于解决标准版Logic App在异常情况下无法正常停止的问题。当点击Cancel按钮报错“WorkflowRunCanNotBeCancelled”时,可通过以下步骤解决:进入Logic App的Kudu页面,定位到`C:\home\site\wwwroot`目录下的`host.json`文件,添加`Jobs.SuspendedJobPartition`和`Jobs.CleanupJobPartition`参数,并以大写格式设置值为`"<WORKFLOWID>:2D<RUNID>"`。调整后可成功停止异常Job
101 18
|
5月前
【Logic App】获取Azure Logic App在执行的标识值 Identifier
本文介绍了如何在Logic App中记录执行标识符以方便问题排查。通过添加一个变量(如RequestTrackingID),将其值设为`workflow()['run']['name']`,可实现将Logic App执行的Identifier与业务数据关联。这样,在排查问题时,可通过日志中的关键信息快速定位对应的Logic App执行记录,提升效率。文中还提供了操作步骤及参考资料,帮助用户更好地理解和实现该方法。
95 10

热门文章

最新文章