2016-11-04 81 views
0

我正在开发一个nodejs应用程序,并且要求每个连接每秒发送约10k个请求。客户端应用程序必须打开一个websocket连接才能发送这些请求,并且在服务器端必须仅接收数据并将其发送到队列。服务器端的套接字连接数量并不多,可能在1k左右。我对此有几个问题,任何帮助,非常感谢。Nodejs websocket

  • 首先,是否有可能通过单个主进程来实现此设置?由于我无法与子进程共享Web套接字连接,因此我需要从主进程中获取带宽。
  • 当我尝试对nodejs ws库进行基准测试时,我仅能够每秒发送大约1k个请求,每秒大小为9kb。我怎样才能提高吞吐量?
  • 是否有任何关于如何实现最大吞吐量的例子,因为我只能找到如何实现最大连接的帖子?

谢谢。

回答

1

你最终还是会需要扩展

首先,是有可能实现这种设置有一个主进程?

我真的不认为它有可能通过单线程来实现这一点。 (你应该考虑结垢,永不设计从该选项限制自己)

既然不能分享我需要从主过程中的带宽的 子进程的网络套接字连接。

我确定您会很高兴知道socket.io-redis的存在。

有了它,您将能够在代码的多个实例(进程或服务器)之间发送/接收事件(共享客户端)。 Read more : socket.io-redis (Github)

我知道你正在谈论WS但也许它的价值的变化socket.ioImage Source Article socket comparison

特别知道你可以同时调整垂直(增加每台机器的线程数) 和水平(部署更多的“主人”翻过更多的机器)相对容易。 (我重复一遍:分享你的插座客户&通信进行的跨所有实例)

当我试图基准WS的NodeJS图书馆,我只能送每各9KB第二 大约1K的请求。我怎样才能增加 的吞吐量?

我会建议尝试socket.io + 插座。IO-redis的

  1. 产卵与多个工人等于CPU 核的数量的主站。 (垂直缩放)
  2. 部署您的主人横跨2台或更多机器(水平缩放)
  3. 了解负载平衡&执行基准测试。

有没有对如何实现最大吞吐量,因为我可以只 找到如何实现最大连接数的职位的例子?

如果增加与客户端进行通信的实例数量,您将提高总吞吐量。 (水平+垂直缩放)

这也可能是一个有趣的阅读:

希望它有帮助。

相关问题