了解Azure应用程序服务重新启动并使用新示例替换它的原因

bbuxkriu  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(154)

我从我的Azure应用程序服务中收到以下消息
“由于Azure平台检测到工作进程示例未按预期工作,应用程序从现有工作进程示例中移动,因此应用程序被回收。这导致在新的VM示例上调配和启动应用程序。若要减少此类事件对应用程序的影响,请考虑使用应用程序初始化功能,并确保扩展到多个工作进程。”
问题是,我们有没有办法找出“worker示例没有按预期工作”的原因?我试着进入azure app insight,但找不到任何有意义的东西。谢谢。

fykwrbwg

fykwrbwg1#

"your application was recycled as there was a movement of your application from an existing worker instance because Azure platform detected that the worker instance was not working as expected. This resulted in your application being provisioned and started on a new VM instance. To reduce the impact of such events on your application, consider using the Application Initialization feature and ensure you are scaled to multiple workers."

其中一个原因是,当有多个启动失败导致从后端启动工作进程回收时,可能会发生应用程序回收。

此外,请参考下面链接中SnehaAgrawal-MSFT的答案:-
Azure infrastructure bug: automatic restart of App Service without graceful shutdown - Microsoft Q&A
要获取当前的容器日志,请调用下面的Rest API,它将包含所有容器运行时日志,包括您的工作日志和启动日志:

POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/containerlogs/zip/download?api-version=2022-03-01

如果您的应用程序被回收,它将被移动到一个健康的工人示例.如果你想知道哪个工人是服务的实时流量,您可以检查实时指标在应用程序的见解连接到您的Web应用程序如下:-

选择您的Web应用〉诊断和解决问题〉可用性和性能〉选择Web应用关闭并重新启动选项〉在诊断报告中检查失败的工作示例的名称。

如果您的Web应用程序关闭洞察说,Web应用程序已重新启动,您可以检查Web应用程序重新启动选项,如下所示:

您可以通过点击【应用日志】查看受影响的worker示例,如下图所示:-

您可以在Azure应用程序服务中启用运行状况检查,以便运行状况检查每5-10分钟ping示例一次,并删除有故障的示例并重新启动Web应用程序,以确保应用程序的连续性,请参阅以下内容:

您还可以启用自动修复,以便每当任何示例出现故障时,您的Web应用程序将重新启动或执行您想要的任何操作,请参阅以下内容:-

列出活动Web应用示例的另一种方法是运行下面的Powershell命令:

代码:-

Connect-AzAccount
$context=Set-AzContext -Subscription "<subscriptionId>"
$token = Get-AzAccessToken
$authHeader=@{
    'Content-Type'='application/json'
    'Authorization'='Bearer '+ $token.Token
}
$instances=Invoke-RestMethod -Uri https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Web/sites/<WebAppName>/instances?api-version=2022-03-01 -Method GET -Headers $authHeader
$instances.value.id

输出:-

参考:-

Diagnostics and solve tool - Azure App Service | Microsoft Learn
powershell -如何使用powershell在Azure中的应用服务上运行所有示例guid?- Stack Overflow
Web Apps - Get Container Logs Zip - REST API (Azure App Service) | Microsoft Learn

相关问题