2013-03-20 91 views
7

想创建一个用户可以进行协作的实时应用程序。发现node.js + socket.io是这类问题的解决方案之一。套接字的瓶颈?

我听到其他开发人员说,就我的服务器给用户的套接字数量而言,会有一个瓶颈。因此,如果我有数百个用户在同一时间进行协作,则打开的套接字数量将耗尽,用户将无法连接。这是一个有效的关注吗?

更新:关于排序相关的笔记我正在寻找使用SockJS而不是Socket.io。这些库有一个thread that explains pros and cons。还有this is a good read

+0

JS是不是最快的语言在那里。如果您发现自己窒息JS,那么寻找C++解决方案可以轻松地将您的吞吐量翻两番。问题不在于你拥有多少个套接字,而是你是否设法及时处理它们。 – dtech 2013-03-21 00:00:02

+2

进程允许打开的文件描述符(包括套接字)的数量可以在所有(大多数?)UNIX类型的操作系统上配置,通常使用'ulimit'(在shell中)或'sysctl'(系统范围内,仍然会同样需要'ulimit')。 – robertklep 2013-03-21 09:10:07

回答

4

对于成百上千的用户,我不认为这是一个问题。

正如您所知的套接字在客户端和服务器之间具有持续连接,并且双方可以随时开始发送数据。保持打开状态不像处理每秒发送消息的负载那样多。

Socket.io可以轻松处理1000个并发连接。但是如果它每秒发送超过8-10k条消息,它将会失败。您的套接字耗尽之前,您将打开载荷屏障。在大多数情况下,处理更多并发用户会转化为更高的负载。所以不要担心套接字太低。试图超越这个障碍将需要更多的服务器资源。

帮助链接:

  1. Socket.IO - are the open connections a concern?
  2. http://www.quora.com/How-do-I-scale-socket-io-servers-2