【问题标题】:nginx/haproxy performance with many lines of configuration多行配置的 nginx/haproxy 性能
【发布时间】:2013-03-03 12:01:14
【问题描述】:

我正计划构建一个可以以编程方式设置子服务器并使用 nginx/ha 对它们进行沙箱化的环境。首先,我会确保*.example.com 指向 nginx/ha。然后,例如,我将应用程序x 设置为仅从x.example.com 提供服务,然后允许应用程序x 与应用程序y 的特定方法通信,我将添加以下配置:

server { 
    server_name x.example.com;

    location /y/allowed/method/ {
        proxy_pass y.example.com;
    }
}

(以及相应的 haproxy 配置,如果我要使用 ha)

我的问题是,我可以在给定的 nginx 或 haproxy 实例中包含多少这样的服务器和位置,同时仍保持高性能?我知道我可以将访问限制上移一层到应用程序本身,尽管我更喜欢在网络层

编辑: 答案在下面的 cmets 中。本质上,如果配置可以放入 RAM,性能不会受到影响。

【问题讨论】:

    标签: nginx haproxy


    【解决方案1】:

    您应该生成具有许多服务器块(每个域一个)的 nginx 配置,如下所示:

    server { 
        server_name x.example.com;
    
        location /y/allowed/method/ {
            proxy_pass y;
        }
    }
    

    参考:

    【讨论】:

    • 没错,这比 domain 好......我会更新问题 不过,我的问题仍然存在,nginx 可以处理多少条规则?例如,如果我有 1000 台服务器,每台服务器有 10 个不同的位置进行代理?
    • 这取决于你有多少内存乘以你在nginx中编译了多少模块。
    • 1000 个服务器 x 10 个位置必须没问题。事实上,我看到了配置大几十倍的人。
    • 所以它可以处理 100,000 个位置而不会对性能产生太大影响?我想如果它散列每个服务器+位置会很好吗?我仍然对限制是什么感到好奇(为了争论,我们会说它是一个带有默认模块的 vanilla nginx 服务器)?虽然我希望有人知道,但我可以做一些测试......
    • 它对server_names 使用哈希表(参见:server_names_hash_bucket_size),对locations 使用某种基数树,除非它们由正则表达式指定。唯一的限制是 RAM 的数量。
    猜你喜欢
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 2020-01-03
    • 2012-03-31
    • 2017-09-10
    • 2012-08-16
    • 1970-01-01
    • 2014-02-06
    相关资源
    最近更新 更多