-1

socket.io在我的聊天系统上使用 nodejs。我的硬件是13.6 Ghz Cpu16gb ram.

当在线用户数达到600时,一些用户无法连接到socket,无法发送消息。一些用户断开聊天。

我该如何解决这个问题?您对这个问题有什么看法?

4

1 回答 1

8

首先,我不确定单线程的时钟速度如何达到 13.6ghz。我假设您的 CPU 有多个内核,或者您的主板支持多个处理器插槽,而 13.6 只是一个总和。(8.2GHz 是2013 年 7 月 23 日创下的世界纪录。)

其次,我会问自己为什么会发生这种脱节。

  • 您是否正在关注处理器负载 - 单个线程是否最大化其处理器分配(即单个内核上 100% 的使用率)?
  • 您的 RAM 消耗情况如何;它是否在攀升,并且操作系统是否将内存卸载到页面文件/交换分区上 - 是否存在内存泄漏?
  • 你的网络带宽有上限吗?是否已达到最大容量?

我的高级建议是:

  • 确保您的应用程序是非阻塞的。这意味着尽可能使用异步方法。然而,按照设计,所有 Node.js 的 Net 方法都是异步的。
  • 考虑集群您的应用程序并使用共享端口。这对于使用Cluster的 Node.js 子进程是可能的。这会将 CPU 上的负载分配给多个内核。您不必担心负载平衡(例如循环、最快、比率) - 处理客户端是在先可用先服务的基础上,无论哪个 Node.js 进程可以首先处理客户端的请求,都会获胜。
  • 验证您的 NIC 有足够的吞吐量来处理负载。如果将其配置为/自动协商为 10BASE-T 或 100BASE-TX 半双工,您可能会遇到麻烦。

最终,您需要执行更多诊断以隔离问题。好奇心、挖掘、耐心和研究将引导您找到答案。您的问题太开放了,无法提供确切的答案-它更具理论性。还有太多变量无法确定确切原因。

于 2013-08-23T00:28:51.790 回答