通过Web支持与Erlang的多个套接字连接

时间:2016-07-29 14:25:59

标签: sockets nginx erlang

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

我想知道,如何管理10000个同时连接?我的意思是,我的系统中是否需要有10000个端口供他们连接,比如1000-11000?

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

1 个答案:

答案 0 :(得分:0)

不,你不需要10000个端口。从我们不了解您的硬件配置的角度来看,这个问题有点宽泛。

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

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

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

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

请参阅此post以了解Nginx中的调优情况。我无法对Apache设置发表评论。

总之,如果您正在使用unix套接字,那么您只需要一个端口用于传入连接。如果您要代理连接到绑定在其他端口上的应用服务器的连接,则您需要2个或更多。

声明: 我不是专家,但无论如何我试图回答。