【问题标题】:Best server configuration for site with heavy calculations计算量大的站点的最佳服务器配置
【发布时间】:2015-09-21 01:24:29
【问题描述】:

我有一个网站,它使用符号数学库来执行一些繁重的计算。

目前平均计算时间为 5 秒。

我知道,这问的问题太笼统了,但是,这种类型的网站的优化配置是什么?什么服务器最适合这个?

目前,我正在使用带有 mod_wsgi 的 Apache,但我不知道如何正确配置它。

网站平均每秒接收 40 个请求。

我应该设置多少进程、线程、MaxClients 等?

也许,使用nginx/uwsgi/gunicorn(我使用python作为编程语言)更好?

无论如何,任何信息都非常感谢。

【问题讨论】:

  • 重计算将受益于向编译语言(C 变体/Go/Java/Scala)的迁移。出于部署目的,我推荐 Go,因为它的并发性和编译为单个二进制文件。

标签: python nginx apache2 server uwsgi


【解决方案1】:

安德鲁,

我相信您可以移动一些部署拓扑。

我的建议是使用 nginx 来传递 HTTP 内容,并使用一些 Web 框架公开您的应用程序,即 tornadoweb(我的偏好,考虑到异步核心,如果与 twisted 相比,文档记录最好,甚至是一个非常棒的框架)

您可以通过代理在 nginx 和 tornado 之间进行通信。配置简单。

您可以复制您的服务实例以在同一台机器和另一台主机内分发您的计算应用程序。它可以通过 nginx 上游轻松配置。

如果您需要更高的性能,您可以将应用程序分解为小模块并使用异步消息传递进行集成。您可以选择使用 zeromq 或 rabbitmq 等解决方案。

然后,您可以拥有不同的拓扑,在应用程序的演变过程中逐渐应用。

第一个拓扑: nginx -> tornadoweb

第二个拓扑: 具有负载平衡的 nginx(上游)-> tornadoweb 在 [1..n] 实例上复制

第三个拓扑:

[2nd topology] -> 通过消息传递集成您的应用程序 (zeromq, amqp(rabbitmq), ...)

我最喜欢的是第 3 名,首先。但是,你现在应该从 1 号和 2 号开始

有很多选择。但是,对于您的应用程序的简单组织,这些可能就足够了。

【讨论】:

    猜你喜欢
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2021-10-02
    • 2018-03-21
    相关资源
    最近更新 更多