Azure Web App - 请求超时问题

时间:2015-08-21 09:54:25

标签: sql-server asp.net-mvc azure timeout azure-web-sites

我在Azure上运行MVC5网络应用程序。主要是这是一个网站,但我也有一个CRON作业运行(从外部源触发)调用URL(GET请求)来执行一些内务管理。 此任务是异步的,可以占用,有时超过Azure上的默认超时230秒。由于这个原因,我经常会收到500个错误。

现在,我已经完成了一些阅读,这看起来与Azure Load Balancer设置有关。我还发现了一些与能够在各种环境中改变超时有关的线程,但我想知道是否有人在Web应用程序环境中改变Azure负载均衡器超时的经验?这是一个简单的过程吗?

2 个答案:

答案 0 :(得分:0)

  

但我想知道是否有人在Web应用程序环境中更改Azure负载均衡器超时的经验?

您可以在虚拟机和云服务中配置Azure负载均衡器设置。 因此,如果您想这样做,我建议您可以将Web应用程序部署到虚拟机或将Web应用程序迁移到云服务。 有关更多详细信息,请参阅link

如果可能,您可以尝试优化查询或执行代码。

答案 1 :(得分:0)

这是一个古老的问题,但是我在试图弄清楚我的应用程序正在发生什么时遇到了这个问题,所以我想如果其他人也这样做,我会在这里发布答案。

Azure负载均衡器(通过ANY方式创建)通常与外部IP地址一起提供-至少在通过Kubernetes / AKS / Helm创建时-具有所指的4分钟,240秒的空闲连接超时。

话说回来,有两种不同类型的公共IP地址-基本(几乎总是您可能创建的默认地址)和标准。有关文档的更多信息:https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-standard-overview

您可以修改空闲超时,请参见以下文档:https://docs.microsoft.com/en-us/azure/load-balancer/load-balancer-tcp-idle-timeout

话虽如此,更改超时可能会解决您的问题,也可能无法解决。在我们的案例中,我们有一个Rails应用程序,该应用程序连接到Azure之外的数据库。添加具有公共IP的负载均衡器后,所有流量都会退出该公共IP,并受到4分钟的空闲超时的约束。

很好,除了Rails预计不会经常断开与数据库的连接-在这种情况下,这种情况一直发生。

  

我们最终实现了一个连接池服务,该服务位于Rails应用程序与真实数据库之间(称为PGbouncer,特定于Postgres DB)。当计时器接近Azure LB超时时,该服务将监视连接并重新连接。

花了一些时间才能实现,但在我们的情况下却完美无缺。您可以在此处查看更多详细信息:What Azure Kubernetes (AKS) 'Time-out' happens to disconnect connections in/out of a Pod in my Cluster?

可以为公用IP /负载平衡器设置的最长超时是30分钟。如果您要使用的连接闲置时间比闲置时间长,那么您可能会不走运。到目前为止,最多30分钟。