Node.js到Socket.io时间延迟

Mad*_*ech 6 javascript websocket node.js socket.io

我使用Node.js(v0.12.4)和Socket.io(1.3.2)在实时交易应用程序中工作.在那时,当从Node.js向GUI(Socket.Io)发出响应时,我将面临几乎(100ms)的时间延迟.

我不清楚为什么在从Node.js向GUI(Socket.IO)发送数据时存在时间延迟.

这发生在生产现场.我们也试图在生产服务器位置调试此问题,因为网络延迟.但结果相同.

请有人帮我这个吗?

Tim*_*Tim 5

在执行以下操作之前需要注意的一件事.在计算从后端(服务器端)到前端(客户端)的时序时,您需要在使用相同时序晶振的同一台计算机上运行此时序.

即使在高质量的主板上,石英晶体驱动的时序相互脱离.

如果你发现没有延迟计算从后端(服务器端)的时间延迟到前端(客户端)时,在同一台电脑 ,那么你最初发现的延迟是造成由任一网络连接在主板定时晶体的尊重.这将消除Node.js和Socket.io作为时间延迟的原因.

基本上,您需要在解决问题之前找出延迟发生的位置.

您需要做的是找出导致项目中性能最大的因素.为此,您需要隔离每个过程所需的时间.您还需要测量从初始检索数据到发布数据的时间延迟.然后测量每个功能,方法和过程的时间延迟.尝试隔离问题.你需要问最多的时间吗?

为了找出您的性能影响来自哪里,您需要执行以下操作.

  1. 了解多久需要为您的代码,以获取信息需要.
  2. 找出每个信息处理过程在发送数据之前需要多长时间,即函数/方法......
  3. 发送信息后,查找将信息提供给客户端并加载所需的时间.
  4. 添加所有时间并确保它等于您的性能延迟,以确保您拥有隔离性能泄漏所需的所有数据.
  5. 订购每个方法,功能,流程......按时间延迟最耗时,耗时最少.当您发现哪些流程导致最大延迟时,您将能够解决问题......或者至少探索有形的解决方案......

以下是一些可用于衡量整个代码性能的工具.

第一: Chrome有一个非常好的工具,可以让你看到每个执行代码的性能.

第二: 性能 - 现在节点包.您可以将它用于开发性能测试.

第三: 在js中测量时间/性能的堆栈溢出.

第四:你可以使用console.time()之类的东西