You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Azure App Service部署时CPU过高及多w3wp进程问题咨询

Azure App Service部署期间CPU高及多w3wp进程问题解析

原因分析

  • 部署槽预热机制:部署槽在部署/交换前会启动新的w3wp进程预热应用(比如编译ASP.NET视图、初始化依赖服务),同时原生产槽的进程仍在运行,新旧进程叠加导致数量增多。
  • Web Garden进程模型:如果你的App Service Plan是2核及以上规格,应用池默认可能启用Web Garden模式,会为每个CPU核心启动一个w3wp进程,部署期间新旧槽的多核心进程叠加,就会出现超过3个进程的情况。
  • 交换前预热默认开启:使用部署槽交换时,平台会自动预热目标槽的应用实例,这期间新进程启动,原槽进程未停止,进一步增加了同时运行的进程数。

降低CPU使用率的建议

  • 禁用Web Garden:在Azure Portal的应用服务配置中,找到应用池设置,将Maximum Worker Processes设为1,避免单应用池启动多个w3wp进程,减少部署期间的进程总数。
  • 预编译ASP.NET视图:在项目发布配置中开启视图预编译,避免部署时动态编译视图消耗CPU;同时优化应用启动逻辑,延迟非必要服务的初始化,缩短预热时间。
  • 调整部署槽预热设置:如果业务允许短暂冷启动,可以关闭部署槽的"交换前预热"选项,减少部署期间的进程启动数量。
  • 临时升级Plan规格:部署前临时升级App Service Plan到更高核心数的规格,降低单进程CPU占比,部署完成后再降级(适合部署频率较低的场景)。
  • 手动监控进程细节:使用az webapp log tail命令或Azure Portal的进程资源管理器,查看每个w3wp进程的具体CPU消耗,定位启动阶段的低效代码并优化。

内容的提问来源于stack exchange,提问作者Yu Lan

火山引擎 最新活动