美文网首页
没办法想办法

没办法想办法

作者: fooboo | 来源:发表于2019-03-10 15:18 被阅读0次

这段时间主要是搞几件事情,一是性能优化工具,对于lua语言来说,网上现成的工具不多,之前项目测试过几次,主要还是使用lua自已的debug库,hook函数调用,然后对call记录开始时间,对return计算结束时间,这样就能算出此次函数调用花费多少和次数,这样算出来的时间并不准确,且并不能像火焰图那般,可视化一些关键路径和占比。然而对于一些请求其他服务的消息来说,内部使用协程来处理,这样,当请求时,消息进入另一个服务队列,然后挂起此协程,然后消息需要被工作线程调度,处理完毕后进入请求方的服务队列,最后唤醒该协程。然而什么时候被处理,一方面取于该服务队列的负载情况,二是被工作线程处理的时机,三是该消息真正被处理所花的时间。

在网上查找一些资料,有帮助的不多,像openresty,gperftool等并不能用于lua分析。后来使用有向图统计和debug相关的信息,计算每次函数调用时,判断有没有上一个函数栈,即父函数,作为子节点,然后把时间和次数累加到上面,就可以生成类似火焰图分析,当然这里也不能彻底解决协程的问题。

后来参考了下云风的博客,上面有介绍如何统计skynet负载的数据。他上面的大概思想是,对于call请求,先发一条trace消息到对应的服务,里面有本服务的地址和自增的session,和发送时间,然后在发真正的请求消息,这两条消息是连接到该服务的消息队列的。然后会设置收到该请求的时间,接着处理该消息,并记录处理时的时间点,然后发送响应。当收到响应后,该协程被唤醒,这样,有了这几个字段:sendtime/recvtime/resptime/signaltime,可以根据recvtime-sendtime算出队列负载情况,然后由resptime-recvtime算出处理时间,由signaltime-resptime算出本队列的负载情况,当然这里跟那博客中描述的有些出入,当然思想差不多。

二是优化下副本的组件要为下一款游戏使用,因为前两个项目中,写的一些副本玩法,要考虑的东西太多,比如倒计时要不要提示,进副本时有遗漏处理,离开副本时有四五处要处理,写过多的重复代码和可能的出错,之前重构过相关的实现,但不彻底。还有些影响性能的实现,上一款上线的游戏,性能不够优,每个32GB的内存16核的,如果全部单人打pvp副本,顶多四千多个同时进行最耗时的玩法,剩下的其他人游戏会明显卡顿,这块持续重构中。

后面慢慢分析bfs。

相关文章

  • 没办法想办法

    这段时间主要是搞几件事情,一是性能优化工具,对于lua语言来说,网上现成的工具不多,之前项目测试过几次,主要还是使...

  • 变色龙王国 第五章 第二节

    “没办法他们太狡猾了现在只能利用现有的装备来伏击他们。”“那你得想办法来伏击他们呀!”“没办法了,只能向天...

  • 如果某天你引火上了头条,怎么脱身?

    节选《弱传播》 如果没办法实现舆论的转换,就想办法实现舆论的转移。如果不能断掉舆论的链接线,就想办法链接新的链接点...

  • 上啊

    心有不甘就要想办法去改变。有条件要上没条件也要创造条件上。 不要老是自哀自怨,老是没有办法。 没办法,就要想办法。

  • 人要选择大平台

    人要想办法赶上电梯,想办法赶上大平台,光靠自己的能力去跳,没办法那么快发展。个人的力量总是渺小的,没有办法那么快发展。

  • 宅家不出的日子我成了“小裁缝”

    今天天气突然很热,没有提前准备适合娃子穿的夏季衣服,现在也没办法出门,也不能收快递,没办法,只能自己想办法了。 想...

  • 别到真的“没办法”时再去想办法

    大约半年前,达婧跟我说她的膝盖疼得厉害。去那种街头小诊所就诊,医生按痛风治疗,头一两次有些效果,后来再发作,吃药打...

  • 2023-01-15

    2023.1.15日精进 今日体验。都放假了,要个配件比较困难,着急的多想想办法,实在没办法的等等

  • 就死一途(不是瞎说)

    先活着 其他事情再想办法 若是真的没的办法可想 没有活路可寻 果真天意如此 那也没办法 只能就死

  • 台北美食|你一定不能错过的餐厅

    路过我|遇见我 那些我做过的梦 没办法与你诉说 这些我走过的路 想办法与你分享 ////////// 台湾美食驰名...

网友评论

      本文标题:没办法想办法

      本文链接:https://www.haomeiwen.com/subject/lvgupqtx.html