【问题标题】:Azure WebApp Flask App Scale Out - Concurrent RequestsAzure WebApp Flask App Scale Out - 并发请求
【发布时间】:2021-11-24 18:06:58
【问题描述】:

我正在测试 Azure 中的 Flask API 应用程序是否可以处理并发请求。我认为这样做的明显方法是在一个简单的测试项目中添加更多实例,并测试快速调用端点是否会创建并发请求,但似乎每次处理一个请求。我的应用很简单:

from flask import Flask
import logging, sys
import time

app = Flask(__name__)

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)

@app.route('/test', methods=['GET'])
def health_check(): 
    logger.info('Test Start')
    time.sleep(10)
    logger.info('Test Complete')  
    return 'Completed'

然后我部署到 Azure WebApp 并将实例设置为 2。我通过打开两个 Edge 选项卡并同时发出请求进行了测试。我希望我的日志看起来像:

10:00 测试开始 10:00 测试开始 10:10 测试完成 10:10 测试完成

但登录 Azure 显示:

10:00 测试开始 10:10 测试完成 10:10 测试开始 10:20 测试完成

我认为增加实例基本上会创建应用程序的副本,Azure 会自动管理负载平衡,所以我认为第二个请求会意识到第一个请求阻塞并转到第二个实例?

【问题讨论】:

  • 即使第一个实例在做io,第一个实例仍然可以服务请求。您需要更多请求才能正确测试。查看启用负载测试的工具,例如 JMeter 或使用您最喜欢的编程语言

标签: azure flask azure-web-app-service


【解决方案1】:

在您的应用服务 ARR Affinity 开启时,Azure 负载均衡器将仅启用 Web 应用的唯一一个实例。当您禁用 ARR Affinity 时,Azure 负载均衡器将立即启用所有实例,您可以查看所有实例日志。检查here

更多信息请参考here

【讨论】:

  • 感谢您的回答,但 ARR 关联性已关闭。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-05
  • 1970-01-01
  • 2016-04-15
  • 2017-03-23
  • 1970-01-01
  • 2019-04-07
  • 1970-01-01
相关资源
最近更新 更多