CMHopeSunshine / nonebot-plugin-learning-chat

Nonebot2插件,让Bot学习群友的发言和表情包。/ Nonebot2 plugin to learn what your group members say.
GNU Affero General Public License v3.0
155 stars 5 forks source link

主动发言的性能问题 #21

Open yaowan233 opened 1 year ago

yaowan233 commented 1 year ago

现在每三分钟都要从数据库获取一天群内所有消息( 这部分能不能做成缓存,搞个缓存记录一下最近的消息,不然太吃cpu了 https://github.com/CMHopeSunshine/nonebot-plugin-learning-chat/blob/1c9d2ed9895311b1ee1c370d2a6e3d5fc5bb87e3/nonebot_plugin_learning_chat/handler.py#L348-L350

CMHopeSunshine commented 1 year ago

还好吧,几万条数据也都不到0.5秒就获取完,如果要搞缓存,那就是内存换cpu了,我觉得暂时不必

yaowan233 commented 1 year ago

但我这服务器如果开着主动发言的话cpu一直爆满(

CMHopeSunshine commented 1 year ago

是内存爆还是cpu爆啊,我的服务器2核4g,cpu占用长期不到15%,我觉得不是这个的问题,内存占用大倒是真的,因为用到了jieba库,本插件会有200m左右的内存占用

yaowan233 commented 1 year ago

没 就是cpu 我服务器是单核2.5g的

yaowan233 commented 1 year ago

我只要把定时任务关了就没问题了 肯定不是jieba库的问题

CMHopeSunshine commented 1 year ago

这样的话建议试试用原版牛牛吧,它是把消息存内存里定期做持久化的,我在复刻它的时候就是想去掉缓存以优化内存占用

yaowan233 commented 1 year ago

好吧 找到问题了 问题是有一万多个context,但是在这个群里找不到一个answer,所以一直在进行数据库操作( https://github.com/CMHopeSunshine/nonebot-plugin-learning-chat/blob/1c9d2ed9895311b1ee1c370d2a6e3d5fc5bb87e3/nonebot_plugin_learning_chat/handler.py#L409-L450

yaowan233 commented 1 year ago

就是在其他群里面学到了很多,但就是有个群里没有学到什么,这时候就一直在这个for里面循环了 建议可以直接查询answer表,这样可以省下很多时间