作者:传奇之家类别:开区脚本
更新:2026-11-12查看次数:168
有个服开区第二天开始卡,规律很明显,每隔五秒顿一下,人越多越明显。
先怀疑网关和数据库,查了一圈都正常。最后在脚本里找到问题:一个定时器写在了全服触发的段里,五秒执行一次,里面还遍历了全服玩家。
定时器分两种:一种是按人触发,每个玩家自己的计时;一种是全服触发,所有人共用一个。写在全服段里的循环,玩家越多开销越大,几百人的时候就开始卡。
改法是把遍历拆开。全服定时器只做计数,具体的处理分摊到每个人的定时器里,或者每次只处理一小批,一次处理十个,五秒一轮,压力就分散了。
判断是不是定时器的问题,把定时器注释掉再跑一次,不卡了就锁定范围。注释之前先备份脚本,别改完忘了改回来。
还有个小坑:定时器里做了数据库查询。五秒一次、每次几十条查询,连接池很快就满。定时器里尽量不要查库,要查就先取到内存里。
定时器还有个数量的坑。每个玩家挂一个定时器,看起来没问题,实际上一千人就是一千个计时,M2 的主循环要挨个扫。人多的时候改成统一的时间轮,一个计时管所有人。
排查卡顿的时候先看时间点。整点卡、每五秒卡、还是人多了才卡,三种对应的原因完全不同。有规律的那种,八成就是定时器。