本文介绍了6个技巧,这些技巧可以改善Azure App Service托管应用程序的性能。其中一些技巧是你现在就可以进行的配置变更,而其他技巧则可能需要对应用程序进行一些重新设计和重构, 本文的几个技巧对于常规企业部署依旧有指引作用。

长话短说

开发者都希望从部署在Azure的App Services中压榨出最佳性能,更好的性能不仅能够获得更佳的响应体验,而且如果性能提升的策略在Azure中能有“四两拨千斤”的效果,那么性能提升还可以为我们省钱。
在本文,我们将研究提高Azure App Services中运行的Web程序性能的设置和策略。

下面几个性能提升意见在App Service配置界面即可操作,这一组技巧的主题是

评估程序现状,压榨出程序本身性能。

1. 启动HTTP/2

Microsoft于2018年初宣布在App Services中支持HTTP/2,但到目前为止在Azure中默认创建的App Service还是以HTTP1.1协议工作。HTTP/2对常见的的Web协议进行了重大更改,许多更改旨在提高性能并减少Web延迟 (例如HTTP/2中的标头压缩和二进制格式将减少有效负载大小);另外请求管道和多路复用等功能允许使用更少的网络套接字来执行更多并发请求,并有助于避免一个缓慢的请求阻止所有后续请求,这在HTTP1.1是常见问题。

如上图示,为你的的App Service启用HTTP/2协议,下拉列表指定HTTP2.0版本后,所有支持HTTP/2的客户端都将自动升级其连接,不支持HTTP/2的客户端仍然以原有Http1.1 方式交互。

下面是一个简单的测试以验证HTTP/2的改进:

某App Service托管页面引用了脚本、CSS资源、16张图像(每个图像的大小超过200 KB),使用developer tool记录使用HTTP 1.1在App Service发生的情况。

注意观察条形红色部分显示了后置请求以阻塞状态开始。这是可怕的“行头阻塞”问题,其中[对连接数和并发请求的限制] 制约了客户端和服务器之间的吞吐量,直到第一个请求开始后800毫秒,客户端才会收到该页面的最终字节。

接下来在App Service中启用了HTTP/2支持:

不需要对客户端或服务器上进行任何其他配置更改,不到500ms完成所有请求。由于HTTP/2提高了网络利用率,从而避免了阻塞。

2.  关闭空闲休眠

如果你有将应用程序部署到IIS的经历,那么你应该知道IIS在一段时间不活动之后将休眠(这个配置在IIS理默认是20分钟)。

Azure App Service延续了这一传统。尽管休眠可为在同一App Service Plan上运行的其他App Service提供资源,但是此策略会损害当前应用程序的性能,因为下一个传入请求将经历Web服务器冷启动的过程:缓存为空、连接池为空,站点预热,所有请求的速度都比正常情况慢。为了防止空闲休眠,你可以在"App Service配置"中【始终开启】标志。

3. 关闭App Service实例亲和力

即使你仅运行App Service Plan的单实例,每个Azure App Service前面都是负载平衡器,负载均衡器会转发请求到App Service实例。当App Service因流量缩放出多实例,负载均衡器使用Application Request Routing将连接会话分发给实例。

因为Azure无法知晓应用程序是不是stateless服务,故默认的App Service将确保客户端在会话期间访问同一App Service实例,为了实现这种亲和力,负载均衡器会在对客户端的第一个响应中注入ARRAffinity Cookie。

如果你的应用程序是stateless,并允许负载平衡器在实例之间分配请求,请关闭请求路由cookie,以提高性能和弹性。

下面的改进需要一些其他网络规划或重组(某些情况下,还需要更改应用程序本身)

这一组技巧中的主题是缩短数据在网络上传输的距离

4. 让你的服务资源相距更近

比如常规的WebApi服务,需要搭建App Service和Database,建议你把资源放在同一区域协同工作,不然一次请求,处理链路会满世界跑。

5. 让你的App Service与使用者更接近

如果大多数客户流量都来自世界的特定区域,则将资源放置在离客户最近的Azure区域中是很有意义的。当然,我们许多人的客户分布在世界各地。在这种情况下,您可以考虑跨多个Azure区域进行地理复制,以与每个人保持更近距离,之后你使用类似Azure Traffic Manager(基于DNS技术的负载均衡器)将你的客户直接路由到最近的服务实例。

6. 让你的服务内容与使用者更接近

脚本、图片、CSS,视频等静态资源是在CDN边缘服务器上缓存的较好选择,一旦缓存,Azure App Service不需要花费带宽和时间在这些资源上,专注处理动态资源。

回过头来,看以上性能优化建议,第一步还是要评估App Service当前现状和性能,不是每一个策略都对你的App Service有效。

btw 这些策略对于常规企业级部署依旧有所指引。

+ 本文翻译整理自:https://www.telerik.com/blogs/nine-performance-tips-for-azure-app-services

扫一扫左边二维码,
更多干货等着你。
............

我就知道你在看!

提升Azure App Service的几个建议相关推荐

  1. Azure App Service Plan

    之前使用过Azure Function等Serverless服务,但没有对App Service Plan做深入的了解,今天看了官方文档,针对概念性的内容,跟大家做个总结和分享,希望对大家有帮忙. A ...

  2. 在 Azure App Service 上运行 .NET 6 预览版

    点击上方蓝字关注"汪宇杰博客" 原文:Jeff Martinez 翻译:Edi Wang 导语 .NET 6 是最新的 .NET 版本,它最终将.NET Core,Framewor ...

  3. 在 Azure App Service 上启用 Application Request Routing

    点击上方蓝字关注"汪宇杰博客" 导语 我们在IIS上经常使用 Application Request Routing (ARR) 模块做反向代理.Azure App Service ...

  4. Azure App Service 如何在第一时间用上最新版 .NET Core

    点击上方关注"汪宇杰博客" ^_^ 导语 微软会经常对 .NET Core 发布更新,通常为安全补丁.这不,今天早上,.NET Core 3.1.5 更新发布了.然而 Azure ...

  5. 微软 Azure App Service 漏洞 NotLegit已存在4年,客户源代码被暴露

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士 本月初,微软通知相关 Azure 客户称,Azure 云的一个特性 Azure App Service 中存在漏洞,至少从2017年9月起就暴露 ...

  6. 远古魔力 | 在Windows 10和Azure App Service里跑上世纪的ASP

    ASP(没有.NET) 即 Active Server Pages (动态服务器页面)是一项由微软公司在1996年推出的技术,能够在IIS中运行动态网站.也许许多90后及千禧一代程序员并没有听说过它, ...

  7. Azure App Service 上的根证书

    点击上方蓝字关注"汪宇杰博客" 原文:Amol Mehrotra 翻译:Edi Wang 导语 App Service 有一个受信任的根证书列表,您不能在 App Service ...

  8. Azure App Service 健康检查正式发布

    点击上方蓝字关注"汪宇杰博客" 原文:Jason Freeberg, Suwat Bodin 翻译:汪宇杰 导语 通过App Service,可以在流量增加时自动将应用程序自动扩展 ...

  9. java获取keyvault_使用 Key Vault 引用 - Azure App Service | Microsoft Docs

    您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 使用应用服务和 Azu ...

最新文章

  1. 云计算读书笔记(五)
  2. 数据库 sqlite top写法
  3. 线程间的通信方式1--共享变量(内存)
  4. linux英文系统+搜狗输入法
  5. 优必选能开放软硬件源代码吗_开放式硬件为何胜出
  6. ROS学习笔记6(理解ROS话题)
  7. Question 20171117 Java中的编码问题?
  8. Ubuntu 20.04 安装多个版本 php 并应用到 nginx
  9. android 钢琴调音软件,钢琴调音软件(TuneLab Pro)
  10. unity3D-下载安装指南
  11. 机器视觉运动控制一体机应用|工件同心度检测
  12. C语言1加到100的递归方法,递归调用实现1到100的累加
  13. PTB中的Screen函数
  14. 跟老男孩学 Linux 运维:Web 集群实战
  15. 【教程】爱玩吧QQ空间说说刷赞网怎么刷秒赞教程
  16. SQL Server 索引基础知识(7)----Indexing for AND(转自蝈蝈俊.net)
  17. 计算机启动F1正在准备自动修复,电脑正在准备自动修复(电脑一直循环自动修复)...
  18. centos 5.6 安装HP打印机--成功版本
  19. JAVA-Spring Bean作用域
  20. 【案例】 压缩算法 —— LZ 算法

热门文章

  1. 把我的爱送给你――C#3.5(这题目似乎写错了)
  2. 使用目录服务和 Visual C# .NET 向本地系统添加用户
  3. 如何在iPhone和iPad上允许“不受信任的快捷方式”
  4. 电热水器工作过程 c语言,热水器工作流程图
  5. 浏览器自动化操作标准--WebDriver
  6. 城市智慧停车系统方案的产品设计体系介绍
  7. threeJS 实用
  8. Akka2使用探索3(Duration 和 Deadline)
  9. 设计模式之Builder
  10. 张亚勤:PC之外的争夺战