如何在Node.JS中处理WebSocket服务器上的巨大流量



我在Node.JS中使用ws库。当我有100多个客户端时,WebSocket服务器无法处理所有流量,服务器会滞后,但如果用户断开连接,服务器会正常工作。我使用Heroku来托管服务器。我可以做些什么来优化我的服务器/应用程序?我应该使用Heroku以外的其他服务吗?

编辑:我正在使用付费版的Heroku(爱好)。我的剧本不长(大约140行)

编辑:我有来自OVH的3 x VPS Cloud 3。

  • OpenStack KVM
  • 99.99%SLA
  • 4个vCore
  • 3.1千兆赫
  • 8 GB内存
  • 100 GB
  • 高可用性NVMe(Ceph)
  • 带宽100Mbps
  • Ubuntu服务器15
  • 每个服务器17个IP

客户端->VPS 1->((VPS 2->example.com)+(VPS 3->example.com

此问题包含的信息不足,无法正确回答此问题。造成这种情况的因素有很多。举几个例子:

  • 机器规格(内存、cpu等)
  • IO(HDD速度)
  • 文件描述符
  • 代码(多核、线程等)
  • 带宽
  • 网络限制

正如其他人所说,Node.JS通常在具有异步IO的单核上运行。正如我过去与许多人争论的那样,并发性不是并行性。这是一个巨大的差异。这并不意味着Node不能用于支持更多的用户,但这也取决于您如何实现它以及下面的所有其他因素。想想一辆根本发动不起来的汽车。你不能只是说,"嘿,我的车发动不了——为什么不呢?"同时,你也不能简单地说,"嗨,我的汽车发动了,但有时在行驶时,它会剧烈振动,并发出奇怪的噪音。"

你能把你正在使用的Node.JS网络套接字代码放在一个pastebin上,并包括它运行的服务器的信息吗?从那里可以得到一些好的信息:

cat/proc/meminfocat/proc/cpuinfoulimit-

此外,您拥有的带宽(100mb?10mb?)

这些将是研究问题并尝试确定瓶颈所在的良好起点

哦,如果你在OpenVZ主机上,如果你能给bean计数器信息,那会很有用。

相关内容

  • 没有找到相关文章

最新更新