【问题标题】:How many Tornado Instances and How many Nginx Worker Processes多少个 Tornado 实例和多少个 Nginx 工作进程
【发布时间】:2016-05-25 09:17:51
【问题描述】:

假设我正在使用 Tornado 运行一个 Web 应用程序,并在 Nginx 后面作为 负载均衡器 运行它们。请告诉我某些方面的最佳做法

1. 如果我在 AWS EC2 实例 中运行服务,那么我应该为给定运行多少个 NGINX 工作进程任何特定实例的 xVCPU。假设我在具有 2 个 VCPUEC2 实例上运行,那么我应该运行多少个工作进程?如果我知道它的一般规则会更好。另外,在什么情况下我应该增加工人数量而不是一般规则?

2. 现在,在我将 Nginx 设置为负载均衡器之后,它归结为我的 Tornado 应用程序。那么,给定 EC2 实例 中的 xVCPU,我应该运行多少个 Tornado 实例?如文档中所述,每个处理器有 1 个实例 很好,但这是 最佳条件吗? 如果是,那么在什么情况下,我应该寻找增加每个处理器的实例数?如果不是,最好的规则是什么?

注意:我通过 Supervisord 作为我的流程管理程序运行实例。

3. 现在,如果我的应用程序对 MySQL 数据库和 MongooseIM 服务器进行大量 async 调用,都在同一台主机上运行,​​那么每个处理器的 Tornado 实例数是否应该更改?如果是,那么规则是什么?如果不是,那么最佳做法是什么?

【问题讨论】:

    标签: nginx amazon-ec2 tornado supervisord


    【解决方案1】:
    1. 如果您在一台机器上单独运行 nginx,那么您应该为其提供与 CPU 数量一样多的工作进程。如果您在与 Tornado 相同的机器上运行它,那么您可能希望减少它的数量(也许只有一个)。但是这里最好是太高而不是太低,所以如果你不确定使用 CPU 的数量是可以的。如果您使用 TLS(尤其是具有更强的安全设置)或提供大量静态文件,您将需要更多的 nginx 工作人员,而如果它只是 Tornado 的代理,则需要更少的工作人员。

    2. 每个 CPU 一个 Tornado 实例是最好的起点。如果您的应用程序使用线程执行很多操作,或者如果在同一台机器上运行其他东西,您可能会减少这个数字,如果您在没有线程的情况下执行任何同步数据库/网络调用,您可能会增加它。

    3. 只要您的数据库调用是异步的,它们就不会影响您应该运行多少 Tornado 进程。

    【讨论】:

    • 对于点号。 1,所以如果我在一台机器上运行 Nginx 独立,没有。 CPU 是我最好的选择。如果我与 Tornado、MySQL 等其他程序同时运行它,那么降低数字是一个不错的选择。那么这是因为给其他程序的 CPU 份额而不是给 Nginx 工作人员的主要部分?是这个原因吗?
    • 另外,根据您提到的增加编号。使用 TLS 时的 nginx 工作人员。现在,如果我说,我通过 nginx 提供静态文件并通过 Tornado 提供动态内容。遍布 TLS、https,它还包括用于密码散列的 CPU 密集型 bcrypt。那么没有怎么办。 nginx 工人和没有。龙卷风实例现在?规则是什么?以免说 2 个 CPU 也提到 4 个 CPU,然后告诉我一般 x 否。 CPU 数量。
    • 没有规则;确定哪种划分适合您的应用程序的唯一方法是进行自己的负载测试。
    猜你喜欢
    • 1970-01-01
    • 2013-07-25
    • 2012-06-18
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    相关资源
    最近更新 更多