查看: 5|回复: 0

传奇单机版M2挂死不自动重启?守护进程工具配置全攻略,稳定运营必看

75

主题

40

回帖

395

积分

二百VIP

积分
395
发表于 6 小时前 | 显示全部楼层 |阅读模式
二百论坛
本站支持代销互换开区传奇版本、欢迎广大GM、技术、一条龙等传奇业界好友合作、联系业务QQ:1531850810

QQ交流群①:323634742(推荐 )QQ交流群②:764544814(推荐)

本站提供的传奇版本 由于来源不同 精力有限 无法100%测试 如需使用本传奇版本请切记

下载传奇版本后 先解压 再杀毒 更新官方引擎 最后再配置登陆器 避免被非法木马插件利用


跑传奇单机版时间长了,迟早会遇到一个问题:M2Server.exe突然挂死,服里所有人掉线,你没在电脑旁边,一两小时后才发现,日志里只有一行含糊的报错,也找不到根本原因。

这种事发生一次还好,发生几次之后你就知道了——光靠"不让它挂"是不够的,还得让它"挂了自己起来"。

今天说的就是这件事:传奇单机版服务端守护进程配置,把M2Server挂死后的自动重启搞定,然后顺带讲一下进程监控工具怎么用。

---

先说为什么M2会挂死

挂死的原因很多,但常见的就那几类:

一、脚本死循环。某个QFunction里写了个计时器嵌套,条件永远成立,M2逻辑线程跑满,系统慢慢失去响应。

二、Logs目录撑满。默认情况下翎风引擎不限制日志文件大小,跑几个月日志文件能有十几个G,磁盘写不进去,M2开始卡顿直到挂死。

三、假人内存泄漏。跑了大量假人的单机版,如果假人脚本里有内存没释放的逻辑,时间一长M2占用内存会涨到几个G,系统OOM,进程被强杀。

四、数据库文件损坏。SQLite或Access DB在意外断电后文件损坏,M2启动时读不到数据,僵死在那里。

---

方案一:用批处理做最简单的守护循环

最土但最有效的办法。新建一个 guard_m2.bat,内容如下:
  1. @echo off
  2. :loop
  3. echo [%date% %time%] 启动M2Server...
  4. start /wait "M2" "D:\LF传奇单机版\GameSvr\M2Server.exe"
  5. echo [%date% %time%] M2Server已退出,5秒后重启...
  6. timeout /t 5 /nobreak
  7. goto loop
复制代码

把这个bat文件放在M2Server.exe同目录,每次开服改成运行这个bat而不是直接运行M2Server.exe。

原理很简单:start /wait 会等M2进程结束,一旦M2退出(无论是崩溃还是正常关闭),循环继续,5秒后重新拉起来。

注意两个坑:

坑一:start /wait 后面的路径必须用绝对路径,不要用相对路径。否则在不同目录运行bat时找不到exe。

坑二:这个方案无法区分"正常关闭"和"崩溃退出"。如果你想手动维护停服,不能直接Ctrl+C关bat,要先关M2再关bat。否则bat会立刻重启M2,让你很尴尬。

---

方案二:用NSSM把M2注册成Windows服务

NSSM(Non-Sucking Service Manager)是一个免费小工具,专门把任意exe注册成Windows系统服务,系统服务可以配置"崩溃后自动重启",比bat方案更稳。

下载解压后,管理员权限运行cmd,执行:
  1. nssm install M2Guard
复制代码

弹出配置界面后:
- Path:M2Server.exe的完整路径
- Startup directory:M2Server.exe所在目录
- Arguments:留空

点Install Service,服务创建完成。

然后配置自动重启:
  1. nssm set M2Guard AppRestartDelay 5000
复制代码

意思是M2崩溃5000毫秒(5秒)后自动重启。

用命令管理服务:
  1. nssm start M2Guard     # 启动
  2. nssm stop M2Guard      # 停止
  3. nssm restart M2Guard   # 重启
复制代码

NSSM的好处:系统重启后服务自动跟着起来,不需要手动开服;日志也会记录进Windows事件日志,排查崩溃原因更方便。

---

方案三:PowerShell脚本监控+进程检测

如果你不在电脑旁边,想知道M2挂死了,可以用PowerShell写一个监控脚本:
  1. while ($true) {
  2.     $proc = Get-Process -Name "M2Server" -ErrorAction SilentlyContinue
  3.     if (-not $proc) {
  4.         $time = Get-Date -Format "yyyy-MM-dd HH:mm:ss"
  5.         Add-Content -Path "D:\m2_restart_log.txt" -Value "$time M2Server挂死,执行重启"
  6.         Start-Process "D:\LF传奇单机版\GameSvr\M2Server.exe"
  7.     }
  8.     Start-Sleep -Seconds 30
  9. }
复制代码

每30秒检查一次M2进程是否存在,不存在就记录日志并重启。

---

配套必做:Logs目录定期清理

光有守护进程还不够,Logs目录不处理迟早再挂。可以在bat或计划任务里加上:
  1. forfiles /p "D:\LF传奇单机版\Logs" /m *.txt /d -7 /c "cmd /c del @path"
复制代码

意思是删除7天前的日志文件。每次开服前跑一次,保持Logs目录干净。

---

进程监控工具推荐

除了守护重启,日常监控也很重要,推荐两款免费工具:

Process Hacker 2(免费开源)
- 可以看M2Server实时CPU、内存占用,出现异常趋势提前发现
- 支持设置进程崩溃时触发通知

HWMonitor(免费)
- 看服务器机器CPU温度和磁盘状态
- 温度过高也会导致M2出问题,排查时有用

---

三种方案对比

方案难度稳定性停服便捷度
bat守护循环最简单够用稍麻烦
NSSM服务中等最稳命令行控制
PowerShell脚本中等灵活可扩展


纯单机自己玩,bat方案够了;有人来玩或者想稳定运营,上NSSM;想知道挂没挂,PowerShell加检测逻辑。

这几个方案不冲突,可以组合用。自己现在是NSSM注册服务+PowerShell每30秒检查+Logs每天自动清理,运行两个月多没有出现不知道就挂了好几小时的情况了。

传奇单机版的乐趣在于折腾数值、调玩法,不是在守着服务端等它挂。把稳定性这关先过了,才能安心搞其他东西。
二百论坛
免责声明:

1、本论坛资源均来源于网络

2、如下载使用,自行杀毒

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

QQ| 手机版|小黑屋|二百版本库 |网站地图

免责声明:本站所有资源皆来自于互联网.请在下载使用内24小时内删除! 如果侵犯了您的权益,请至邮箱: (1531850810@qq.com), 我们会及时删除侵权内容。

Copyright © 2001-2026 Discuz Team. Powered by Discuz! X3.5

关于我们 | 联系方式 | 隐私政策