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

jan*_*den 5 nginx ab

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

apr_socket_recv: Connection reset by peer (54)
Run Code Online (Sandbox Code Playgroud)

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

这是为什么?我尝试增加工作进程的数量(运气不好),但我认为 nginx 应该能够在不调整任何配置变量的情况下处理 4 个以上的请求。难道是我不小心触发了某种 DOS 保护机制?

Ara*_*ani 5

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

但是此错误的根本原因是您的盒子中可以拥有的打开套接字数量有限。如果您使用的是 OSx,您可以参考这个答案来设置更高的数字到这个限制:

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