pjlt / lanthing-pc

BSD 3-Clause "New" or "Revised" License
92 stars 12 forks source link

缩短串流连接时间 #214

Open numbaa opened 7 months ago

numbaa commented 7 months ago

第一次复现:

  1. APP发送RequestConnection
  2. service收到OpenConnection,启动worker
  3. service连接上了信令服务器
  4. service接受了worker的管道连接
  5. 超时

理论上3、4可以并行,之后是P2P连接成功的日志。但这之间还有不少步骤,不确定是哪一步有问题,需要加日志。

numbaa commented 7 months ago

通过加日志分析发现,service在回OpenConnectionAck之后,到app收到RequestConnectionAck有时会花费大量时间。 这种情况有几种可能:

  1. service调用了tcp send接口,但其实缓存起来了,一直没有发送出去
  2. lanthing-svr之间网络很差
  3. app收到的RequestConnectionAck的包,但是一直没有回调上来

客观地看,第2种最有可能,但是直觉上第一种可能性也很大,可能错误使用libuv导致数据缓存起来。 在 #219 设置了TCP NoDelay,看看能不能解决该问题。 由于不是稳定复现,需要观察一段时间。

numbaa commented 7 months ago

设置了TCP NoDelay问题依然存在,甚至会触发10秒超时。