Mirserver

参数与性能优化

M2Server 性能调优指南,涵盖 CPU、内存、数据保存和脚本优化建议。

M2Server 是 Blue 引擎的核心主程序,负责游戏逻辑处理、脚本执行和 NPC 交互。合理的性能调优可以让服务器在高负载下依然流畅运行。

CPU 优化

提高计时精度

M2Server 菜单:选项 > 提高计时精度

该开关默认打开,打开能获取更精准的封挂检测准确度:

  • 默认状态:打开。能获取更精准的封挂准确度
  • Win2003 32 位系统:开启后 M2 的 CPU 使用率会大幅提高;如果认为机器的 CPU 资源不够使用,可以选择关闭,以降低部分桌面程序的 CPU 使用率
  • 64 位操作系统:默认已打开计时精度,开启或关闭对 CPU 影响不大;网关里的开关不影响 M2 的 CPU

如果发现引擎 CPU 占用比较高,尝试不要勾选:主菜单 → 选项 → 提高计时精度。

脚本层面

  • 避免过多重复读写文本的脚本操作
  • 将频繁操作改为内存模式(UseFastTextFile=1)
  • 优化脚本逻辑,新引擎对死循环检测更严格

内存优化

文本操作内存化

新引擎中 NPC 文本操作默认载入内存以减少磁盘 IO。通过 HardDisk 参数控制写入方式:

; 仅内存模式:数据在内存中,引擎每 1 分钟自动保存一次
AddLineList ..\QuestDiary\rolelist.txt 123456789

; 实时写盘模式:立即写入物理硬盘
AddLineList ..\QuestDiary\rolelist.txt 123456789 HardDisk

使用原则:

  • 不需要实时持久化的文本操作 → 不加 HardDisk,提升性能
  • 需要实时保存的关键数据 → 加 HardDisk,保证数据安全

变量读写

加载和保存变量时,必须加 HardDisk 参数,否则可能出现数据错乱:

LOADVAR GLOBAL 测试变量1 ..\QuestDiary\测试变量\全局.ini HardDisk
SAVEVAR GLOBAL 测试变量1 ..\QuestDiary\测试变量\全局.ini HardDisk

脚本路径规范

新版本统一使用 ..\QuestDiary\ 路径,QuestDiary\ 和 .\QuestDiary\ 两种旧写法已废除:

; 老写法(已废除)
AddLineList QuestDiary\rolelist.txt <$USERNAME>

; 新写法(统一)
AddLineList ..\QuestDiary\rolelist.txt <$USERNAME>

数据保存性能

!Setup.txt 中的关键参数:

SaveDataTimeoutMs=10000      ; 保存数据超时(毫秒),适当增大可减少保存压力
DBSvrConnections=16          ; M2 和 DBServer 连接数,建议 16-32
KeepSaveDataCache=1          ; 人物保存数据缓存保留,减少重复读写

视野范围优化

MaxViewRangeX=16             ; 视野范围 X
MaxViewRangeY=15             ; 视野范围 Y

视野范围直接影响服务器需要同步的实体数量。在玩家密集的地图,适当缩小视野范围可以显著降低服务器负载。

地图优化

在 MapInfo.txt 中给地图增加 OPTI 参数,使地图提前申请内存优化:

[0150 沙巴克皇宫] OPTI
[3 盟重省] OPTI

适合怪物多、玩家常 PK 的地图使用此优化。

脚本性能建议

  1. 避免重复检测:减少不必要的循环读写文本操作
  2. 控制定时器频率:大量触发事件建议使用机器人定时器代替实时触发
  3. 优化死循环:新引擎对脚本死循环检测更严格,需确保脚本逻辑无无限循环
  4. 减少日志输出:关闭不必要的日志减少 IO 开销

性能监控与排查

关键目录

路径说明
Mir200\Log\引擎运行日志
Mir200\ConLog\玩家账号角色登录日志
Mir200\CrashDumps\崩溃转储文件,用于分析崩溃原因
Mir200\bugreport.txt崩溃日志记录
Mir200\!debug.txt崩溃日志记录

排查步骤

  1. 查看 Mir200\Log\ 下的运行日志
  2. 检查是否存在脚本死循环提示
  3. 检查 CrashDumps\ 目录下的崩溃转储文件
  4. 使用网关伴侣工具调节网关移动速度参数
  5. 关闭不必要的日志输出减少 IO

常见性能问题

  • 释放技能或移动攻击时人物定住 1 秒:使用网关伴侣工具调节网关移动速度
  • CPU 占用过高:检查是否在 32 位 Win2003 上开启了"提高计时精度",或排查脚本中是否存在大量重复读写文本操作

相关阅读