大量消息下,在MCL使用MiraiCP插件时收到消息存在严重延迟且发送消息后报错
-
如题,使用的mcl版本是1.2.2,安装的插件除了MiraiCP-plugin-2.7-RC-dev5.mirai和我自己写的插件以外并没有其他。
插件确定没有问题,在我自己的电脑使用只添加了一个群和两三个好友的小号进行测试,发送群聊消息延迟在3s左右,发送私聊消息延迟在1s以内
此时有一个问题:mcl偶尔会卡主,表现为在某个时间点突然收不到消息,然后再mcl窗体随意输入任何字符的那一瞬间,没有收到的消息突然就刷出来,且显示接收时间相同(实际上这些消息在QQ上并不是同时发送的),这个问题在测试时出现频率较低且没什么规律。插件在小号上测试完毕后我在mcl上登陆了一个bot,加的群比较多,大约有500+群,消息大概每秒三四条。此时问题开始出现,我在群里发送消息后大概半分钟甚至更长时间后这条消息才显示在mcl界面上,有时还会丢失这条消息。
而在性能较低的服务器上有时一分钟以上才能接收到消息
而在接收到消息后,发送消息时那个问题又出现了。下面是其中的一次的情况,这个问题很容易复现,如果还需要其他例子,我可以提供。2021-08-23 16:18:06 V/Bot.3457317465: [H*****b(9*****4)] 不*****盟)(4*****2) -> .ct (这条消息其实是我在16:17:32时发送的) 2021-08-23 16:18:08 I/MiraiCP: Send message for Group(9*****4) is 品味生活!已为不*****盟)调好最合适的饮品: Mimosa(含羞草) 6.50%Vol. 世上有多少种水果,就有多少种含羞草 开胃,发泡,清爽 描述仅供参考 2021-08-23 16:18:08 V/Bot.3*****5: Event: GroupMessagePreSendEvent(target=Group(9*****4), message=品味生活!已为不 *****盟)调好最合适的饮品: Mimosa(含羞草) 6.50%Vol. 世上有多少种水果,就有多少种含羞草 开胃,发泡,清爽 描述仅供参考) 2021-08-23 16:18:09 V/Bot.3*****5: [犬*****厅(1*****0)] F*****k(3*****8) -> [mirai:image:{C4616713-4CD1-0616-FB55-99EC6FC9CC64}.jpg] 2021-08-23 16:18:13 V/Bot.3*****5: Event: Dropped(bot=Bot(3*****5), cause=HeartbeatFailedException: AliveHeartbeat, recoverable=true, cause=PacketTimeoutException(message=Timeout receiving Heartbeat response, cause=kotlinx.coroutines.TimeoutCancellationException: Timed out waiting for 5000 ms)) 2021-08-23 16:18:14 V/Bot.3*****5: [沈*****锤(1*****6)] 反*****徒(1*****7) -> 两个6联旋风热熔 2021-08-23 16:18:18 V/Bot.3*****5: [被*****)(6*****2)] 加*****子(1*****8) -> [mirai:quote:[1*****7],[1*****8]][mirai:at:5*****8] 问题不大,群里比你怪的也有 2021-08-23 16:18:18 V/Bot.3*****5: Group(9*****4) <- 品味生活!已为不*****盟)调好最合适的饮品:\nMimosa(含羞草) 6.50%Vol.\n世上有多少种水果,就有多少种含羞草\n开胃,发泡,清爽\n描述仅供参考 2021-08-23 16:18:18 W/Bot.3*****5: Connection lost, reconnecting... (HeartbeatFailedException: AliveHeartbeat, recoverable=true, cause=PacketTimeoutException(message=Timeout receiving Heartbeat response, cause=kotlinx.coroutines.TimeoutCancellationException: Timed out waiting for 5000 ms)) 2021-08-23 16:18:18 V/Bot.3*****5: Event: GroupMessagePostSendEvent(target=Group(9*****4), message=品味生活!已为不*****盟)调好最合适的饮品: Mimosa(含羞草) 6.50%Vol. 世上有多少种水果,就有多少种含羞草 开胃,发泡,清爽 描述仅供参考, exception=kotlinx.coroutines.TimeoutCancellationException: Timed out waiting for 5000 ms, receipt=null) 2021-08-23 16:18:18 I/stdout: Timed out waiting for 5000 ms 2021-08-23 16:18:18 I/stdout: {"data":{"miraiCode":false,"source":"{\"contact\":{\"botid\":3*****5,\"groupid\":0,\"id\":9*****4,\"nickornamecard\":\"H*****b\",\"type\":2},\"content\":\"品味生活!已为不*****盟)调好最 合适的饮品:\\nMimosa(含羞草) 6.50%Vol.\\n世上有多少种水果,就有多少种含羞草\\n开胃,发泡,清爽\\n描述仅供参考\"}"},"type":1} 2021-08-23 16:18:18 W/stderr: kotlinx.coroutines.TimeoutCancellationException: Timed out waiting for 5000 ms 2021-08-23 16:18:18 W/stderr: at kotlinx.coroutines.TimeoutKt.TimeoutCancellationException(Timeout.kt:186) 2021-08-23 16:18:18 W/stderr: at kotlinx.coroutines.TimeoutCoroutine.run(Timeout.kt:156) 2021-08-23 16:18:18 W/stderr: at kotlinx.coroutines.EventLoopImplBase$DelayedRunnableTask.run(EventLoop.common.kt:497) 2021-08-23 16:18:18 W/stderr: at kotlinx.coroutines.EventLoopImplBase.processNextEvent(EventLoop.common.kt:274) 2021-08-23 16:18:18 W/stderr: at kotlinx.coroutines.DefaultExecutor.run(DefaultExecutor.kt:69) 2021-08-23 16:18:18 W/stderr: at java.base/java.lang.Thread.run(Unknown Source) 2021-08-23 16:18:18 E/MiraiCP: MiraiCP error:MiraiCP内部无法预料的错误:reach a error area, Contact::SendMiraiCode 2021-08-23 16:18:18 V/Bot.3*****5: [C*****组(7*****3)] 群*****往(8*****8) -> 也可能大家只看见一张嘴连着个胃? 2021-08-23 16:18:18 I/Bot.3*****5: Saved account secrets to local cache for fast login. 2021-08-23 16:18:18 I/Bot.3*****5: Login successful. 2021-08-23 16:18:18 V/Bot.3*****5: Event: BotOnlineEvent(bot=Bot(3*****5)) 2021-08-23 16:18:18 I/Bot.3*****5: LMT白名单读取完成 2021-08-23 16:18:18 I/Bot.3*****5: LMT列表读取完成 2021-08-23 16:18:18 I/Bot.3*****5: 全局昵称读取完成 2021-08-23 16:18:18 I/Bot.3*****5: 群组昵称读取完成 2021-08-23 16:18:18 I/Bot.3*****5: 关闭群列表读取完成 2021-08-23 16:18:18 I/Bot.3*****5: 村规读取完成 2021-08-23 16:18:18 I/Bot.3*****5: 目前以名称检索的酒品名单上的酒品分别有这么多:157 157 2021-08-23 16:18:18 V/Bot.3*****5: Event: BotReloginEvent(bot=Bot(3*****5), cause=null) 2021-08-23 16:18:18 I/Bot.3*****5: Reconnected successfully in 0.287s. 2021-08-23 16:18:19 V/Bot.3*****5: [庸*****团(8*****3)] 本*****红(2*****0) -> 稳妥=委托
-
去https://github.com/Nambers/MiraiCP 发个issue,我晚点会测试并发后续上去
-
@nambers 好的!
-
mcl偶尔会卡主,表现为在某个时间点突然收不到消息,然后再mcl窗体随意输入任何字符的那一瞬间,没有收到的消息突然就刷出来
根据该现象判断
你点了一下命令行窗口,进入了 Windows CMD 的编辑模式,, 判断方法为 CMD 窗口标题开头是
编辑模式
(Select
) 或者什么其他的开头,
触发编辑模式的效果为:控制台输出堵塞,Windows阻止控制台输出导致接着的内部系统逻辑无法继续执行取消方法也很简单, 就是随便按下一个键
可以参考 https://jingyan.baidu.com/article/380abd0a7b99005c90192c86.html
-
@karlatemp 感谢大佬!我尝试一下!
-
@karlatemp 这个问题已经解决了,非常感谢!
-
qs 正常情况下也要1~2s处理信息, 可能是因为json操作,我分析下代码
-
@nambers mcl卡住的问题已经解决了,但是那个timeout5000ms的那个错误还是会经常出现,在服务器上出现的频率高于我自己的电脑上,而私聊几乎不出现,私聊的反应速度也比群聊快得多