Python websocket通信的延迟调试

Python websocket通信的延迟调试,python,websocket,wireshark,latency,tcpdump,Python,Websocket,Wireshark,Latency,Tcpdump,我正在处理websocket的调试延迟问题 我正试图通过websocket接口从加密货币交易所接收一些价格信息。我们收到的数据包包括exchange服务器上的时间戳生成器。我记录我们在计算机上收到勾号信息的时间(“客户端框”),并比较到达时间和服务器生成时间之间的延迟。大多数滴答声显示几十毫秒,这或多或少是好的。但是每天我们都会看到几次延迟变成几秒甚至超过10秒,我想知道这些大延迟是从哪里来的 系统使用的是Python编程语言,我使用的websocket模块是websocket client(,

我正在处理websocket的调试延迟问题

我正试图通过websocket接口从加密货币交易所接收一些价格信息。我们收到的数据包包括exchange服务器上的时间戳生成器。我记录我们在计算机上收到勾号信息的时间(“客户端框”),并比较到达时间和服务器生成时间之间的延迟。大多数滴答声显示几十毫秒,这或多或少是好的。但是每天我们都会看到几次延迟变成几秒甚至超过10秒,我想知道这些大延迟是从哪里来的

系统使用的是Python编程语言,我使用的websocket模块是
websocket client
(,),我试图在模块内添加日志,看看这是否是由于模块处理时间造成的,但仍然没有成功

我现在想到的一个想法是使用
tcpdump
捕获网络流量并记录tcp数据包到达我的网卡的时间。如果这一次仍然出现延迟,我将没有别的办法,只能将程序移动到一个位于同一位置的服务器上。然而,我在这里遇到了困难,因为websocket连接是SSL加密的。因此,我无法在消息中看到标记生成时间

这里有人有解决办法吗?特别是:

  • 有没有办法从客户端从
    websocket客户端
    python包中检索SSL的私钥?(我假设密钥应该在本地的某个地方可用,否则
    websocket客户端
    无法解密数据本身。WireShark应该能够解密TSL1.2协议的消息)
    • 如果使用
      websocketclient
      package不容易做到这一点,我很乐意尝试其他由python编写的websocketlib,即C/C++
  • tcpdump
    当TCP数据包从服务器发送时(即使在服务器时间内),是否可以获取时间戳
我们也非常感谢您提供的任何其他建议

非常感谢


谢谢@Eugène Adell 我在WireShark中打开的tcpdump大致如下所示 我可以在
TCP选项-Timestamps中看到TSval
这些能说明什么吗?
抱歉,可能是一些基本问题,在这方面确实缺乏经验&再次感谢。

编辑

tcpdump是否可以获取从发送的TCP数据包的时间戳 服务器(即使在服务器时间内)

打开捕获,查看数据包是否具有TCP时间戳选项(如中所定义,但在中有更好的解释)。如果是这样,第一个SYN包应该已经提到了它

不幸的是,这些数据包中给出的TSval(以毫秒为单位的时间戳值)的含义并不是真正的时钟,也不总是像真正的时钟一样变化(它取决于计算机使用的实现)。例如,如果与服务器的对话持续60秒,请检查此TSval是否也从60秒开始移动,如果是,您可以使用此字段跟踪数据包的发送时间。

编辑

tcpdump是否可以获取从发送的TCP数据包的时间戳 服务器(即使在服务器时间内)

打开捕获,查看数据包是否具有TCP时间戳选项(如中所定义,但在中有更好的解释)。如果是这样,第一个SYN包应该已经提到了它

不幸的是,这些数据包中给出的TSval(以毫秒为单位的时间戳值)的含义并不是真正的时钟,也不总是像真正的时钟一样变化(它取决于计算机使用的实现)。例如,如果与服务器的对话持续60秒,请检查此TSval是否也从60秒开始移动,如果是,您可以使用此字段跟踪数据包的发送时间