使用 ab 对 nginx 进行基准测试:对端重置连接(54)

使用 ab 对 nginx 进行基准测试:对端重置连接(54)

我最近更新到了 nginx 1.0.8,并尝试对缓存的动态页面(最初由 Django 应用通过 proxy_pass 提供)和静态页面的性能进行基准测试。在这两种情况下,nginx 都不会处理超过 3 或 4 个请求(即使没有并发连接),因此 ab 几乎立即报告:

apr_socket_recv: Connection reset by peer (54)

仅当选择最多 4 个(或更少)请求时,ab 才能成功完成。

这是为什么?我尝试增加工作进程的数量(没有成功),但我认为 nginx 应该能够在不调整任何配置变量的情况下处理超过 4 个请求。难道是我意外触发了某种 DOS 保护机制?

答案1

ab我在针对简单的 Node.JS 应用进行本地测试时遇到了同样的问题。我发现的一个解决方法是使用ab -r指示 的选项Don't exit on socket receive errors

但此错误的根本原因是您的机器中可以打开的套接字数量有限。如果您使用的是 OSx,您可以参考此答案将数字设置为高于此限制:

如何增加 osx 上套接字的限制以进行负载测试

相关内容