最小化WebSocket客户端延迟的经验法则是什么?

时间:2018-08-12 23:37:08

标签: haskell networking websocket algorithmic-trading low-latency

我目前正在处理延迟关键型应用程序。对代码进行性能分析后,我得出结论,瓶颈可能与WebSocket客户端有关。我不控制服务器,只控制客户端。

上下文

我正在与服务器相同的可用区中运行带有ENA(弹性网络适配器)的c5d.xlarge Ubuntu实例。如果从我的实例ping服务器,则延迟小于1毫秒(通常在0.2到0.5毫秒之间)。我的代码是用Haskell编写的,这是我使用的WebSocket库:http://hackage.haskell.org/package/websockets 服务器发送的消息时间戳与我收到消息时创建的时间戳之间的差异通常小于10毫秒,这对我来说已经足够了。但是,有时该时间差会增加到4-500 ms甚至更糟(1-1.5s以上)。我怀疑这是在服务器必须处理增加的活动时发生的,因此,当服务器承受重负载时。尽管我没有发现任何迹象表明可能是我的代码,实例设置或两者的组合导致此延迟高峰,但我仍然持怀疑态度,因此我从本地计算机前往https://websocket.org/echo.html (Mac),以便从那里检查延迟(使用Chrome作为我的浏览器)。由于这比我的实例离服务器更远,因此我得到的延迟稍高,但通常低于50毫秒。 4-500毫秒的延迟尖峰也在这里发生。

复制

在Chrome中,转到https://websocket.org/echo.html并连接到:wss://www.bitmex.com/realtime 最后,将以下消息发送到服务器,并检查Chrome开发者工具中“网络”标签下的WebSocket框架:

{"op": "subscribe", "args": ["orderBook10:XBTUSD"]}

问题

在这种情况下,是否有任何方法可以进一步减少延迟?配置我的WebSocket客户端连接时是否存在任何经验法则?我尝试使用WebSocket压缩扩展,但这似乎无济于事。我觉得我对此无能为力,因为服务器不在我的控制之下。谢谢!

0 个答案:

没有答案