我在使用 JMeter 对在 NGINX 服务器上运行的 Node.js Sequelize PostgreSQL 应用程序进行负载测试时遇到问题。当我设置 1000 个线程并设置 1 秒的启动时间时,一切都运行顺利。但是,当我在 10 秒的启动时间内将负载增加到 10,000 个线程时,某些调用会失败,并出现错误,例如“连接被拒绝”、“连接超时”或“无法连接到服务器”。
为了排除故障,我直接在 NGINX API 上执行了相同的负载测试,而不涉及 Node.js。令人惊讶的是,尽管 NGINX 返回了 200 状态代码,我仍然遇到类似的问题。
我怀疑我的 NGINX 设置中可能存在配置错误。任何有关如何诊断和解决此问题的见解将不胜感激。
似乎当您发送 10,000 个线程时就达到了连接限制。尝试增加连接数。
events {
worker_connections 10240; # Adjust this number as needed for this may be 10, 000 +
}
同时检查 keep_alive 选项,即可以处理多少个请求
keepalive_requests 10000; # Adjust this number as needed for this may be 10, 000 +
如果您超出了 nginx 范围,您可以尝试更新系统限制:
* soft nofile 100000
* hard nofile 100000
请尝试解决方案,这似乎主要是请求限制问题。