如何在 Windows 中设置 nginx 端口的最大队列连接数?

如何在 Windows 中设置 nginx 端口的最大队列连接数?

我正在学习设计可扩展系统,目前使用的是 Windows 机器。我创建了两个服务器,它们将监听端口 27016 和 27015,它们所做的就是返回“HelloWorld!”响应。在 Visual Studio 中创建这两个服务器时,我已为它们设置了 listen(ListenSocket, SOMAXCONN),如下所示温索克教程。使用 jmter 对它们每个单独执行负载测试(每秒 1000 个请求)并且一切正常。

现在,当我引入监听端口 80 的 nginx 并在上述两个服务器之间对请求(每秒 1000 个请求)进行负载平衡时,使用 jmeter 执行负载测试时许多请求都被丢弃。

我假设端口 80 的队列大小未针对高流量进行配置,并且想要对其进行调整。如何从 nginx 配置或 cmd 命令将队列大小设置为最大可能值?

答案1

以下是来自 Nginx 网站的信息:

worker_processes:NGINX 工作进程的数量(默认值为 1)。在大多数情况下,每个 CPU 核心运行一个工作进程效果很好,我们建议将此指令设置为 auto 以实现此目的。有时您可能需要增加此数字,例如当工作进程必须执行大量磁盘 I/O 时。

worker_connections:每个工作进程可以同时处理的最大连接数。默认值为 512,但大多数系统都有足够的资源来支持更大的连接数。适当的设置取决于服务器的大小和流量的性质,可以通过测试来发现。

因此,worker_processes 的最佳选择与您拥有的核心数相同。worker_connections 的值默认为 512。您可以根据需要以及系统可以处理的范围增加它。

以下内容也可能有帮助:

keepalive_requests:客户端可以通过单个保持连接发出的请求数。默认值为 100,但更高的值对于使用负载生成工具进行测试尤其有用,因为负载生成工具通常会从单个客户端发送大量请求。

keepalive_timeout:空闲保持连接保持打开的时间。以下指令与上游保持连接相关:

活着:每个工作进程保持打开状态的与上游服务器的空闲保持连接数。没有默认值。

我希望这会有所帮助!

注:我同意@Alexey Ten

相关内容