2016-07-29 96 views
0

假设我有一个API应用程序,它可以通过Web连接到用户应用程序。例如,现在有10.000个用户通过他们的客户端应用程序连接到它。通过Web支持与Erlang的多个套接字连接

我想知道,我该如何管理10000个同时连接?我的意思是,我需要在我的系统中有10000个端口用于连接,例如1000-11000?

如果我使用nginx或apache作为反向代理,它将如何工作?

回答

0

不,你不需要10000个端口。这个问题有点宽泛,因为我们不知道你的硬件配置。

如果您有多个服务器,可以使用多个代理连接的上游服务器相对容易地完成此操作。在这些服务器中的每一个服务器上,您都将绑定到unix套接字以减少连接的开销(因此您也不会使用其他端口)。

Nginx配置将不得不根据您正在运行的硬件(如工作进程和工作人员连接的数量)进行调整。您还必须配置keep_alive超时和缓存策略。启用压缩功能可能会有所帮助,但如果将其设置得太高,则可能会消耗太多的CPU周期。再一次,它依赖于硬件。

另一件需要注意的将是你的网关接口(例如wsgi,fcgi,uWSGI等)。这些配置也需要进行调整。从理论上讲,这些连接接口可以绑定到它们自己的套接字,因此您可以模拟在单个服务器上有多个应用程序服务器。但是,这不会改善这种情况。

最后一条评论: 如果您运行的是单个服务器并希望实现10000个并发连接,Nginx将能够在大多数情况下处理流量。瓶颈在您的应用服务器上发生。很多时候它无法处理负载。在这种情况下,请尝试优化代码库或获取其他服务器(或升级硬件)。

在Nginx中查看此post。我无法对Apache安装程序发表评论。

总之,如果您使用的是unix套接字,则只需要一个用于传入连接的端口。如果要将连接代理到绑定在不同端口上的应用程序服务器,则需要2个或更多。

声明: 我不是专家,但我试图回答。