Nodejs负载很重

时间:2013-08-22 23:34:29

标签: node.js socket.io

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

当在线用户数达到600时,某些用户无法连接到套接字,无法发送消息。有些用户会断开与聊天的连接。

如何解决此问题?你对这个问题有什么看法?

1 个答案:

答案 0 :(得分:4)

首先,我不确定单线程的时钟速度是13.6ghz。我假设您的CPU有多个内核,或者您的主板支持多个处理器插槽,而13.6只是一个总和。 (8.2GHz was a world record于2013年7月23日设定。)

其次,我会问自己为什么发生了断开连接。

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

我的高级建议是:

  • 确保您的应用程序无阻塞。这意味着尽可能使用异步方法。但是,根据设计,所有Node.js的Net方法都是异步的。
  • 考虑集群应用程序并使用共享端口。使用Cluster的Node.js子进程可以实现这一点。这会将CPU上的负载分配给多个核心。您不必担心负载平衡(例如循环,最快,比率) - 处理客户端是先到先得,无论哪个Node.js进程可以首先处理客户端请求,都胜出。 / LI>
  • 验证您的NIC是否有足够的吞吐量来处理负载。如果它被配置为/自动协商为10BASE-T或100BASE-TX半双工,则可能遇到麻烦。

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

相关问题