我们的Nginx网络服务器遇到了问题,我们不明白发生了什么(在它后面,我们有一个Rails应用程序的Unicorn和Puma)。
我们有6个处理器和worker_processes auto;
配置。在事件中,我们有默认的worker_connections 768;
。
我们的印象是,我们能够处理6 x 768 = 4608个活动连接。
我们正在使用NewRelic和NGINX插件监控NGINX。
有时我们会有连接中断(用户从NGINX得到一个错误500),我们可以在日志中看到这个著名的错误:768 worker_connections are not enough
一个简单的systemctl reload nginx
和问题就消失了。
当我们查看NewRelic时,我们可以看到当这个问题发生时,活动连接数翻了一番(从400增加到800)。重要的一点是,我们正在运行的B2B应用程序的客户数量有限,所以我们没有更多的流量时,活动连接计数翻倍。我们可以看到每秒的请求保持不变。查看我们的访问日志,我们没有看到攻击。
所以我们的问题是:
- 为什么我们的活跃连接会翻倍
- 为什么我们的工人不能处理这些活动连接,因为只有800个活动连接,而我们的配置应该能够处理至少4000个连接
我们有“死”的nginx工人吗?为什么重装后一切都恢复正常?
非常感谢你的帮助!
这是一个屏幕截图,我们的NewRelic Jmeter 板时,这是发生
1条答案
按热度按时间niwlg2el1#
NGINX重新加载后活动连接增加一倍可能有几个原因。一个可能的原因是NGINX和上游服务器之间的keepalive连接未启用。如果未启用keepalive连接,则在请求完成时关闭连接。这可能导致源端口耗尽并降低性能。