Replies: 2 comments 2 replies
-
endless loop from 地址是0 考虑是socket消息处理或者是skynet.timeout定时器消息耗时过长。 |
Beta Was this translation helpful? Give feedback.
1 reply
-
建议在 timer 处理函数上加时间统计并记录下来。并查看服务的 cpu 统计。 |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
1.最近用skynet开发了一款mmo,基本的结构是每个玩家是个msgagent服务,每个场景是2个服务,1个是场景用于处理逻辑的,另一个是使用云大的caoi模块做成的单独的服务。
2.机器配置是16核心32G内存
3.目前遇到的问题是某些场景在在线人数800+偶发卡顿,一天会发生几次。卡顿的时候aoi模块看着还能正常,人物移动还能刷出来npc。但是点npc对话很难打开。发生问题后,不处理会在几十分钟到个把小时后恢复正常。
4.出问题的时候其他场景,能正常游戏,没有任何影响,很难传送到出问题的场景,传送到出问题的场景也因为卡顿很难离开
5.出现问题的时候机器的cpu并不是很高,应该是只有出问题的那个场景服务的核心跑满了。
6.出现问题的概率应该跟玩家数量相关,但并不是某个场景人数多就一定能触发。如果所有玩家一直待在这个场景反而在线人数很高也不会卡顿,但是如果玩家频繁切场景很容易触发。这是怀疑的一个点。
7.出问题后在msgagent处理message的时候加了skynet.trace(),出现问题时,场景服务处理客户端的请求耗时并不高。
8.出现问题的时间段日志里存在maybe in an endless loop
9.有个问题是出现endless的持续时间并不长,可能在几分钟,但是需要恢复的时间在20分钟往上。
10.另外一个怀疑是是场景里的统一的定时器,在定时器里处理某个逻辑时消耗太复杂。定时器代码
希望各位能给点思路帮忙排查问题
Beta Was this translation helpful? Give feedback.
All reactions