Azure连续WebJob上运行单进程多线程.NET应用程序的CPU使用率高

问题描述 投票:1回答:1

背景-

我有一个.NET应用程序,它在Azure应用程序服务连续Web作业内作为单个多线程进程运行。该应用程序具有以下线程:(1)将其连接到REST API,并拉回存储在Azure SQL数据库中的数据;(2)从SQL数据库请求数据,进行一些计算,然后存储结果,(3)拉出其他数据,将其与发送的规则进行比较,并使用SendGrid SMTP发送电子邮件通知,并使用Twilio发送文本消息。

[此应用程序在虚拟Windows Server 2016 Standard(还承载SQL(2016 Standard)数据库)上作为计划任务运行良好,具有8个内核和8 GB RAM,仅消耗0-15%的CPU和大约100MB的内存。 RAM。

问题-

[将其移动到连接到Azure SQL(标准S20层)的连续Azure WebJob(标准S1层)并启动服务后,SQL和App Service的CPU均达到100%。将App Service升级到P2V2层,并将数据库升级到P1层和CPU,对于App Service和SQL来说大约是60%和70%,但是仍然比预期的要高得多。

有人经历过吗?有谁知道线程限制或Azure处理WebJob中复杂应用程序的能力?关于看什么的建议?无法弄清楚为什么与VM相比,Azure需要更多的资源。希望尝试实现无服务器的灵活性和可扩展性。

没有引发任何错误,该应用程序运行正常,但是希望向该应用程序添加其他功能,但担心会消耗更多资源。

.net multithreading azure azure-web-sites azure-webjobs
1个回答
0
投票

应用程序性能问题通常没有明显的解释,需要深入检查和分析,这些因素比书面描述的原因还要多。

最好的选择是使用Application Insights,看看它们是否可以为您提供帮助。

我要说的是,SQL性能受DTU数量的限制,而本地实例则不受限制。在将应用程序服务计划层从S1扩展到P2V2之后,CPU下降表明,您的服务计划不如本地服务器性能好,或者您的服务计划中正在运行其他应用程序,这导致资源争用。

这里有一篇有关利用Application Insights解决性能问题的不错的文章:

https://docs.microsoft.com/en-us/azure/azure-monitor/learn/tutorial-performance

© www.soinside.com 2019 - 2024. All rights reserved.