我希望我的 HAProxy 负载均衡器能够处理至少 1M 的连接。我需要这个来部署压力测试。
我尝试设置:
maxconn 1000000
在我haproxy.cfg
但 HAProxy 未能开始:
[haproxy.main()] Cannot raise FD limit to 2000029, limit is 1048576.
我在 Ubuntu Linux 20.04 LTS 上的 Docker 容器中运行 HAProxy,它是一个 Amazon AWS Lightsail VPS 实例。
我查看了互联网上有关如何手动增加open files
限制(ulimit -n
)并将粘贴的大量配置复制到我的主机中的各种问题。没有任何效果 - 我无法将此限制增加到高于 1048576 的任何值。
我发现以下有关打开文件数量硬限制的相关帖子:
这个问题似乎与我的几乎相同:
我是否从错误的角度处理问题?是否有另一种方法来配置 HAProxy 以便它可以处理一百万个连接(即,不增加ulimit -n
)?
解决方案
open files
限制可以增加。我偶然发现了一个关于如何增加的有用资源
fs.nr_open
。这就是我最终做的事情(在我的主机上):请注意,所做的更改在重新启动后不会保留。如果有人知道该怎么做,请告诉我,我会编辑我的答案。
我还需要告诉 Docker,在容器中打开超过 1,048,576 个文件是可以的。我使用 Docker Compose 文件来定义我的服务。我只是将以下代码段添加到我的
docker-compose.yml
:最后但并非最不重要的一点是,确保主机实例至少有 2GB 的 RAM,否则当您尝试运行代理时,您将耗尽内存。如果你想用你的代理实际处理 100 万个请求,你需要更多的内存——20 到 30 GB 之间——你可以自己测试。如果您知道如何计算限制,请随时编辑我的答案或在下面发表评论!
打开文件数量的基本原理
如果我们需要为 100 万个连接打开 2,000,029 个文件,那么让我们: