Node.js到Socket.io时间延迟

我正在使用Node.js(v0.12.4)和Socket.io(1.3.2)实时交易应用程序。 在这种情况下,当从Node.js发送到GUI(Socket.Io)的响应时,我面临着几乎(100毫秒)的时间延迟。

我不知道为什么在从Node.js向GUI(Socket.IO)发送数据的时候有延时。

这发生在生产现场。 而且我们也试图在生产服务器位置debugging这也是由于networking延迟。 但是同样的结果。

请任何人帮助我呢?

在做下面的事情之前要注意一件大事。 在计算从后端(服务器端)到前端(客户端)的时间时,您需要在使用同一个时钟晶体的同一台计算机上运行。

即使在高质量的主板上,石英晶体驱动的时序也相互影响。

如果在计算从同一台PC上的后端(服务器端)到前端(客户端) 的时间延迟时没有发现延迟,那么您最初发现的延迟是由于 networking连接主板计时晶片的差异 造成的。 这将消除Node.js和Socket.io作为时间延迟的原因。

基本上你需要找出延迟发生的地方,然后才能解决问题。

你需要做的是找出是什么造成了你的项目中最大的性能 。 为了做到这一点,你需要隔离每个过程所需要的时间 。 您还需要测量从数据的初始检索到数据发布的时间延迟。 然后测量每个function,方法和过程的时间延迟。 尝试隔离问题。 你需要问什么是最花时间做的?

为了找出你的performance来自哪里,你需要做以下的事情。

  1. 了解您的代码获取所需信息需要多长时间
  2. 找出每个信息处理过程需要多长时间才能发送数据, 即函数/方法…
  3. 信息发出后,find需要多长时间才能将信息传送到客户端并加载。
  4. 添加所有的时间,并确保它等于你的性能延迟 ,以确保你有你需要的所有数据来隔离性能泄漏。
  5. 通过时间延迟最耗时,最耗时的方式,对每一种方法,function,过程进行sorting。 当您发现哪些stream程造成了最大的延误时,您将能够解决问题…或至less探索切实可行的解决scheme…

这里有一些工具可以用来衡量整个代码的性能。

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

第二: 性能 – 现在的节点包。 您可以将其用于开发性能testing。

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

第四:你可以使用console.time()

我发现时间拖延发生的地方。

有一次,我从客户端套接字发送数据到节点,我将显示一些警报消息(“数据处理”)。 警报消息花费时间在GUI中呈现。

此警报消息阻止从节点到套接字的响应数据。

感谢您的帮助伙计们。