【问题标题】:Using Fleck Websocket for 10k simultaneous connections使用 Fleck Websocket 进行 10k 并发连接
【发布时间】:2014-04-21 11:39:08
【问题描述】:

我正在为在线游戏实现 websocket-secure (wss://) 服务,所有用户只要在玩游戏就会连接到该服务,这将使用大量同时连接,尽管流量不会是大问题,因为该服务用于聊天、存储和通知……而不是用于实时数据同步。

我想使用 Alchemy-Websockets,但它不支持 TLS (wss://),所以我必须寻找其他服务,如 Fleck(或其他)。

Alchemy 已经过大量同时连接的测试,但我没有找到 Fleck 的类似测试,所以我需要从 Fleck 的用户那里获取一些真实信息。

我知道 Fleck 是非阻塞的并且使用异步调用,但我需要一些真实的信息,因为它可能滥用线程、垃圾收集器或任何其他对较少连接数不可见的方面。

我也会使用 c# 作为客户端,所以我不需要 hybiXX 兼容性,也不需要回退,我只需要可扩展性和 TLS 支持。

【问题讨论】:

  • 我开发了一个 WS 服务器连接器,支持 TLS,它是异步的。我从未尝试在 Mono 中运行它,支持它可能会很有趣。如果您有机会尝试,请告诉我github.com/vtortola/WebSocketListener
  • 它似乎可以工作mono-project.com/Compatibility
  • @vtortola 看起来不错,可以试一试,但通常支持单声道需要一些工作,.net 应用程序默认情况下无法在单声道上运行,大多数时候有一些不兼容的东西需要支持.
  • 我会将单声道支持添加到我的待办事项列表中。

标签: linux c#-4.0 mono websocket


【解决方案1】:

我终于为 WebSocketListener 添加了 Mono 支持。

在这里查看how to run WebSocketListener in Mono

10K 连接不是小事。 WebSocketListener 是异步的,并且可以很好地扩展。我已经用 10K 连接进行了测试,应该没问题。

我的测试表明,WebSocketListener 的速度和可扩展性几乎与 Microsoft 的一样,并且性能优于 Fleck、Alchemy 等。

【讨论】:

  • 我觉得你支持单声道很好,但我已经去节点了。
【解决方案2】:

我在一台装有 Core2Duo e8400 处理器和 4 GB 内存的 Windows 机器上进行了测试。

结果并不令人鼓舞,因为它在达到约 1000 个连接后开始延迟握手,即接受新连接大约需要一分钟。

当我使用 XSockets 时,这些结果得到了改善,因为它在同样的事情发生之前达到了 8000 个同时连接。

我尝试使用 Mono 在 Linux VPS 上进行测试,但我没有足够的 Linux 管理经验,并且需要更改一些与 TCP 等相关的系统设置以允许大量并发连接,所以我只能在默认设置下达到 ~1000,之后他的应用程序崩溃了(Fleck 测试和 XSocket 测试)。

另一方面,我测试了 node.js,管理大量连接似乎更简单,因为节点在达到 tcp 限制时没有崩溃。

echo 测试的所有测试,服务器将相同的消息发送回发送消息的客户端和一个随机连接的其他客户端,每个连接的客户端以随机间隔向服务器发送随机约 30 个字符的文本消息0 到 30 秒之间。

我知道我的测试不够通用,我鼓励任何人改为进行自己的测试,但我只是想分享我的经验。

【讨论】:

    【解决方案3】:

    当我们决定尝试 Fleck 时,我们为 Fleck 服务器实现了一个包装器,并实现了一个 JavaScript 客户端 API,以便我们可以将确认消息发送回服务器。我们想测试服务器的性能——消息传递时间、丢失消息的百分比等。结果对我们来说非常令人印象深刻,目前我们正在生产环境中使用 Fleck。

    我们在高峰时段有 4000 - 5000 个并发连接。平均每秒发送 40 条消息。已确认消息比率(已确认消息/已发送消息总数)永远不会低于 0.994。消息的平均往返时间约为 150 毫秒(服务器发送消息和接收其确认之间的持续时间)。最后,由于 Fleck 服务器的大量使用,我们没有遇到任何与内存相关的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-13
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多