改善Azure App Service托管应用程序性能的几个技巧

 

本文介绍了几个技巧,这些技巧能够改善Azure App Service托管应用程序的性能。其中一些技巧是你如今就能够进行的配置变动,缓存

而其余技巧则可能须要对应用程序进行一些从新设计和重构。性能优化

开发者都但愿从部署在Azure的App Services中压榨出最佳性能。
更好的性能不只可以得到更佳的响应体验;并且若是咱们在Azure中能“四两拨千斤”,那么性能的提高还能够为咱们省钱。
在本文中,咱们将研究提升Azure App Services中运行的Web程序性能的设置和策略。服务器

下面几个性能提高意见在 App Service 配置界面便可操做,这一组技巧的主题是压榨出App Service自己的性能。cookie

 

 

 

 

1.   启动HTTP/2网络

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

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

HTTP/2不会使每一个应用都受益,下面是一个简单的测试以验证HTTP/2的改进:负载均衡

某App Service托管页面引用了脚本、CSS资源、16张图像,每一个图像的大小超过200 KB。less

 使用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,以提升性能和弹性。

--------------------------------------------------------------------------------

下面的改进须要一些其余网络规划或重组(某些状况下,还须要更改应用程序自己)

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

  •   让你的服务资源相距更近,好比常规的WebApi服务,须要搭建App Service 和Database,建议你把资源放在同一区域协同工做。
  •  让你的App Service 与使用者更接近

若是大多数客户流量都来自世界的特定区域,则将资源放置在离客户最近的Azure区域中是颇有意义的。固然,咱们许多人的客户分布在世界各地。在这种状况下,您能够考虑跨多个Azure区域进行地理复制,以与每一个人保持亲密关系,以后你使用相似Azure Traffic Manager(基于DNS技术的负载均衡器)将你的客户直接路由到 最近的服务实例。

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

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

Azure支持CDN边缘服务器的搭建 

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

相关文章
相关标签/搜索