wechaty/wechaty-puppet-padchat

heart beat is broken in a long run

Closed this issue · 11 comments

 ### 1. 提供你的包版本信息

  • wechaty 版本:0.22.4
  • wechaty-puppet-padchat 版本:0.16.2
  • node 版本: >= 10 (运行 node --version 获取版本)

4. 复现的步骤 (或者解决的步骤)

这一部分非常重要,如果你无法给出复现步骤,我们也很难提供相应的解决办法:
例子:

  • 长时间开启,会出现这个问题。

5. 完整的日志信息:

请提供完整的日志信息(不要只提供部分的日志内容!)

$ WECHATY_LOG=silly node yourbot.js

请将你的log 粘贴在这里。

06:36:03 VERB Wechaty onFunction(message)
--
06:36:03 VERB Wechaty on(message, function) registered
06:36:03 VERB Wechaty onFunction(room-leave)
06:36:03 VERB Wechaty on(room-leave, function) registered
06:36:03 VERB Wechaty onFunction(room-join)
06:36:03 VERB Wechaty on(room-join, function) registered
06:36:03 VERB Wechaty onFunction(friendship)
06:36:03 VERB Wechaty on(friendship, function) registered
06:36:03 VERB Wechaty onFunction(ready)
06:36:03 VERB Wechaty on(ready, function) registered
06:36:03 VERB Wechaty onFunction(login)
06:36:03 VERB Wechaty on(login, function) registered
06:36:03 VERB Wechaty onFunction(error)
06:36:03 VERB Wechaty on(error, function) registered
06:36:03 VERB Wechaty onFunction(scan)
06:36:03 VERB Wechaty on(scan, function) registered
06:36:03 VERB StateSwitch constructor(name=WechatyReady)
06:36:03 VERB StateSwitch constructor(name=Wechaty)
06:36:03 VERB Wechaty contructor()
06:36:03 SILL Accessory #0<Wechaty> constructor()
06:36:03 VERB Puppet constructor() childClassPath=/wechat-bot/node_modules/wechaty-puppet-padchat/dist/src
06:36:03 SILL HotImport callerResolve() callerFile=/wechat-bot/node_modules/wechaty-puppet-padchat/dist/src/puppet-padchat.js
06:36:03 SILL HotImport callerResolve() callsites() file=/wechat-bot/node_modules/wechaty-puppet-padchat/dist/src/puppet-padchat.js, type=null
06:36:03 SILL HotImport callerResolve() callsites() file=/wechat-bot/node_modules/wechaty-puppet/dist/src/puppet.js, type=null
06:36:03 SILL HotImport callerResolve() callsites() file=/wechat-bot/node_modules/hot-import/dist/src/hot-import.js, type=Object
06:36:03 VERB HotImport callerResolve(., /wechat-bot/node_modules/wechaty-puppet/dist/src/puppet.js)
06:36:03 VERB Puppet constructor() watchdog timeout set to 240 seconds
06:36:03 VERB MemoryCard load() no storage
06:36:03 VERB MemoryCard load() from storage: N/A
06:36:03 VERB MemoryCard getStorage() for storage type: N/A
06:36:03 VERB MemoryCard constructor(undefined)
06:36:03 VERB StateSwitch constructor(name=PuppetPadchat)
06:36:03 VERB Puppet constructor({"timeout":240,"token":"puppet_padchat_cbf5************4b"}) #0


咱们这个运行的wechaty-puppet-padchat版本有点低,能麻烦用最新版再测试一下看看么?新版是v0.19.3

我们现在用的是"^0.18.2",还需要更新到v0.19.3吗?

PS:抱歉,我发现我写错了,正在用的版本是:

    "wechaty": "^0.22.6",
    "wechaty-puppet": "^0.14.1",
    "wechaty-puppet-padchat": "^0.18.2"

0.18.2应该可以,那我再问下,这个具体是什么问题?是说长时间运行之后,心跳会停么?这个长时间的话,大概是多久。还有你们有计划迁移到wechaty-puppet-padpro

是说长时间运行之后,心跳会停么?

是这样的症状

这个长时间的话,大概是多久。

我手边有log,我要怎么看出来呢?有哪些log的关键字可以定位的?

还有你们有计划迁移到wechaty-puppet-padpro么

我们最终会迁移到Pro,但尽可能推迟这个时间。因为:

  1. 目前还不确定当前问题和pro有关
  2. 我们对pro做过测试,目前它还不稳定

这个长时间的话,大概是多久。

大概感受的话:有时候就几个小时,有时候一两天

这个问题是最近才发生的,还是一直都有?

issue里面贴的log没看明白问题在哪。在这段log的前面是有触发了wechaty的reset么?

padpro是什么时候测试的?最近有一些更新,目前比较稳定了

这个问题是最近才发生的,还是一直都有?

一直有

issue里面贴的log没看明白问题在哪。在这段log的前面是有触发了wechaty的reset么?

我们也不知道怎么看,所以提出来认为可能有用的信息。可能有过人为reset

padpro是什么时候测试的?最近有一些更新,目前比较稳定了

大概几周前测试的。谢谢告知更新。

如果我们想定位这个问题,可以在log里加入些什么命令呢?

padchat的底层偶尔会出现不稳定的情况,会导致连接上的不稳定。

我们为了解决padcaht底层的问题,上线的新的wechaty-puppet-padpro,之后会慢慢把重心都迁移到padpro上面。

关于这个问题,还有一个事情要确认一下,上述描述的情况在重启了程序之后还继续存在么?还是说重启之后会恢复正常?如果可以恢复正常的话,我提出一个workaround的解决方案,就是在服务这边做一个定时的重启,来减少这种心跳包断掉导致的没有反应。

除此之外,还可以让机器人定时发消息到某个微信号,然后检测机器人在线情况,如果超过一段时间没有消息,则认为是掉线,然后重启它。

关于这个问题,还有一个事情要确认一下,上述描述的情况在重启了程序之后还继续存在么?

重启后可以用,但过段时间还继续存在

我提出一个workaround的解决方案,就是在服务这边做一个定时的重启,来减少这种心跳包断掉导致的没有反应。

谢谢,我们去考虑一下

还可以让机器人定时发消息到某个微信号,然后检测机器人在线情况,如果超过一段时间没有消息,则认为是掉线,然后重启它

我们现在用的是这个办法

还可以让机器人定时发消息到某个微信号,然后检测机器人在线情况,如果超过一段时间没有消息,则认为是掉线,然后重启它

我们现在用的是这个办法

我说的不准确,应该是我们在用类似的方法

每天早上10点左右,bot会在group里做推送。
如果它不推送了,很大概率是死掉了。