小编Luc*_*zky的帖子

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

我目前正致力于延迟关键应用程序.在分析我的代码之后,我得出结论,瓶颈可能与我的WebSocket客户端有关.我不控制服务器,只控制客户端.

上下文

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

再生产

在Chrome中,转到https://websocket.org/echo.html并连接到:wss://www.bitmex.com/realtime 最后,将以下消息发送到服务器并检查Chrome Developer Tools中"网络"选项卡下的WebSocket框架:

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

有没有办法在这种情况下进一步减少延迟?在配置我可能缺少的WebSocket客户端连接时是否有任何经验法则?我尝试使用WebSocket压缩扩展,但似乎没有帮助.我觉得我无能为力,因为服务器不受我的控制.谢谢!

networking haskell algorithmic-trading websocket low-latency

5
推荐指数
0
解决办法
568
查看次数