我想知道nginx如何处理吨活跃websocket连接? 有许多限制,如打开文件的数量,IP < – >(IP,端口)等之间的最大TCP连接数为65k。
当我使用nginx作为反向代理,并且在websocket的上游有5个节点时,nginx和每个节点之间是否有高达65k的活动TCP连接? 如果我有超过300K的活动客户端服务的nginx,当然。 或者nginx websocket代理以另一种方式工作?
还有我的另一个问题:我应该调整哪些参数(限制)来处理这么多的连接?
你的理解是正确的,但是你真正的限制是文件句柄。 每个套接字连接都需要一个Linux文件句柄,默认的ulimit是1024. / proc / sys / fs / file-max设置整个系统的限制。 您将需要提高这些限制来处理较高的nginx连接速率。
NGINX人已经在六核服务器上testing了多达50,000个连接:
https://www.nginx.com/blog/nginx-websockets-performance/
现实情况是,如果你想要在现实世界中连接成千上万的连接,你需要在一个循环的DNS之后去多个反向代理。 例如,这就是亚马逊的Elastic Load Balancer的工作原理。 如果您在Slack.com上查找AWS云上的某些内容,并键入“nslookup slack.com”,则会得到一长串IP地址。 再次input它,你会得到一个不同的IP地址列表,所以不同的IP地址在列表头部。 这些是将请求转发给实际应用程序服务器的循环DNS上的Amazon AWS ELB反向代理()。 在这一点上,困难的部分就是pipe理注册和注销来自DNS的反向代理,或pipe理IP地址接pipe,如果这是你打算做的。 困难的问题,因此,我为什么使用亚马逊的解决scheme,而不是滚动自己的。