我在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计数器信息,那会很有用。