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 的地图使用此优化。
脚本性能建议
- 避免重复检测:减少不必要的循环读写文本操作
- 控制定时器频率:大量触发事件建议使用机器人定时器代替实时触发
- 优化死循环:新引擎对脚本死循环检测更严格,需确保脚本逻辑无无限循环
- 减少日志输出:关闭不必要的日志减少 IO 开销
性能监控与排查
关键目录
| 路径 | 说明 |
|---|---|
Mir200\Log\ | 引擎运行日志 |
Mir200\ConLog\ | 玩家账号角色登录日志 |
Mir200\CrashDumps\ | 崩溃转储文件,用于分析崩溃原因 |
Mir200\bugreport.txt | 崩溃日志记录 |
Mir200\!debug.txt | 崩溃日志记录 |
排查步骤
- 查看
Mir200\Log\下的运行日志 - 检查是否存在脚本死循环提示
- 检查
CrashDumps\目录下的崩溃转储文件 - 使用网关伴侣工具调节网关移动速度参数
- 关闭不必要的日志输出减少 IO
常见性能问题
- 释放技能或移动攻击时人物定住 1 秒:使用网关伴侣工具调节网关移动速度
- CPU 占用过高:检查是否在 32 位 Win2003 上开启了"提高计时精度",或排查脚本中是否存在大量重复读写文本操作
