【问题标题】:Wsgi number of process and threads setting in AWS BeanstalkAWS Beanstalk 中的 Wsgi 进程和线程数设置
【发布时间】:2023-03-13 15:44:01
【问题描述】:

我有一个 AWS beanstalk env 并且有旧的 wsgi 设置(如下所示),我不知道这在内部是如何工作的,有人可以指导我吗?

NumProcesses:7 -- number of process
NumThreads:5 -- number of thread in each process

此配置如何使用内存和 cpu,因为 AWS beanstalk 级别中没有内存和 cpu 设置。

【问题讨论】:

    标签: amazon-web-services amazon-elastic-beanstalk


    【解决方案1】:

    这些参数是 Python 环境配置选项的一部分:

    他们的意思是(来自docs):

    • NumProcesses:运行 WSGI 应用程序时应该为进程组启动的 守护进程 的数量(默认值 1)。

    • NumThreads:在运行 WSGI 应用程序时,为处理 每个守护进程 进程组内的请求而创建的线程数(默认值为 15)。

    内部,这些值映射到您的 EB 环境中的 uwsgigunicorn 配置选项。 For example:

    uwsgi --http :8000 --wsgi-file application.py --master --processes 4 --threads 2
    

    它们对您实例的内存和 cpu 使用的影响取决于您的应用程序及其资源密集程度。如果您不确定如何设置它们,也许将它们保持在默认值将是一个好的开始。

    这些设置也在 EB 控制台中可用,在 Software 类别下:

    【讨论】:

      【解决方案2】:

      添加到@Marcin

      1. Amazon linux 2 使用 gunicorn
      2. worker 是 gunicorn 中的进程

      Gunicorn 应该只需要 4-12 个工作进程来处理每秒数百或数千个请求。

      Gunicorn 在处理请求时依靠操作系统来提供所有负载平衡。一般来说,我们(gunicorn 创建者)推荐 (2 x $num_cores) + 1 作为开始的工人数量。虽然不是太科学,但该公式是基于这样的假设:对于给定的核心,一个工作人员将在另一个工作人员处理请求时从套接字读取或写入。

      要查看选项设置中的设置如何映射到 gunicorn,您可以通过 ssh 进入您的 eb 实例,请转到

      $ eb ssh
      $ cd cd /var/app/current/
      $ cat Procfile 
      web: gunicorn --bind 127.0.0.1:8000 --workers=3 --threads=20 api.wsgi:application 
      

      --threads 通常在 2-4 x $(NUM_CORES) 范围内的正整数。您需要稍微改变一下,以找到最适合您的特定应用程序工作负载的方法。

      threads 选项仅适用于 gthread worker 类型。 gunicons 默认工作类是同步,如果你尝试使用同步工作类型并将线程设置设置为大于 1,则会自动使用 gthread 工作类型

      基于以上所有我个人会选择

      workers = (2 x $NUM_CORES ) + 1
      threads = 4 x $NUM_CORES 
      

      对于具有 2 个核心的 t3.medum 实例,可以转换为

      workers = 5
      threads = 8
      

      显然,您需要针对您的用例进行调整,并将这些视为可能不适合您的特定应用程序用例的默认设置,请阅读下面的参考文献以了解如何为您的用例选择正确的设置

      参考资料:

      参考号:Gunicorn Workers and Threads 参考:https://medium.com/building-the-system/gunicorn-3-means-of-concurrency-efbb547674b7 参考:https://docs.gunicorn.org/en/stable/settings.html#worker-class

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-18
        • 1970-01-01
        • 2023-03-04
        • 1970-01-01
        • 2020-10-31
        相关资源
        最近更新 更多