传奇服务端三处在线人数限制修改教程含M2网关DBServer参数与满员排错

来源: 作者: 点击:
第一处限制在主引擎全局在线人数。LEG/Hero类打开Mir200\!Setup.txt,在[Server]相关段查TestServerUserLimit、MaxOnlineUsers、ServiceMode。测试版常把TestServerUserLimit设10或50,ServiceMode=TRUE会走测试人数锁,正式开服改ServiceMode=FALSE或直接把TestServerUserLimit设目标值,例如1000、2000;没有MaxOnlineUsers就按引擎版本补该字段。Hero在M2控制器选项、参数设置、在线人数/登录设置也能改,改完重启M2Server生效。 GOM/GEE类看Mir200\Config\ServerInfo.txt的MaxOnlineUser,部分版本还有GomEngine/Config.ini的OnlineLimit,配置器功能设置、登录限制、最大在线人数同步改,避免M2写1000而配置器仍10。 BLUE类原生不写死人数时可不配全局上限,若第三方包加了BlueM2.ini的UserLimit,删字段或设0;RunGate\Config.ini另走网关人数,不在这里混用。

第二处限制在登录网关和游戏网关。登录阶段进不去、提示满员或连接被断,先查LoginGate\LoginGate.ini。常见参数MaxUser、MaxConnect、MaxConnections,默认可能10、100、500不等,按目标在线改大;多线服复制LoginGate目录做LoginGate1/2/3,端口7000、7001、7002错开,登录器列表把多个网关都写进去,玩家按网关分流。 游戏数据阶段查RunGate\RunGate.ini或Config.ini,BLUE看MaxUser、MaxConnectOfIP、MaxClientCount,例如MaxUser=800控制单RunGate最高人数,MaxConnectOfIP防单IP占满,MaxUserForLoginWait控制超员排队,设0关排队、设8000代表8000人在线后新登录排队。 GOM/GameGate看GameGate.ini的GatePort、MaxUser,单网关建议按硬件给150到500,千人以上开多组RunGate并在Servertable或登录器网关地址里列全。 改网关必须重启对应Gate,M2热重载不替代网关重启;多RunGate时M2内部通信端口、SelGate端口、Servertable序号要对齐,否则一部分人进得去一部分看不到角色。

第三处限制在DBServer和底层数据库会话。玩家能到角色选择但建档、读档慢,或者人数一到某个值就大规模掉线,查DBServer配置。LEG/DBSrv200看Dbsrc.ini的MaxConnect,按目标在线乘1.2配,例如在线1000配MaxConnect=1200;Mud2/DBServer看DBServer.ini的MaxConnect、CacheSize,连接池低就加,缓存按内存给,默认10000可提到50000。 SQL版不只看DBServer,还看数据库自身,MySQL执行show variables like 'max_connections',低了改my.ini的max_connections=500或更高,重启MySQL;SQL Server在属性连接里调最大并发。DBC版看BDE/ODBC别名权限和服务端目录读写,GuildBase、Mir200\DB、Hum.db/Mir.db所在盘别设只读。DBServer写满或连接拒绝时,M2日志会刷存档失败、读角色超时,表面像人数限制,实际是数据库瓶颈。

登录器列表和分区也会造成“三处之外”的误判。列表文件ServerList.txt若只写一个网关、一个端口,千人同时进也只走单入口;正式多线要把一区多线或一区多网关都列出来,例如IP:7000、IP:7001、IP:7100、IP:7200分组。M2最大在线设2000但登录器只配一个LoginGate且MaxUser=100,实际100就满;反过来网关设2000但M2TestServerUserLimit=10,10人后全拒。三者数值按“M2全局≥网关总承载≥DBServer连接≥数据库max_connections”递进,例如M2=2000、LoginGate单组1000两组共2000、RunGate三组每组800、DBServer MaxConnect=2400、MySQL max_connections=500到1000,再按真实CPU内存回压。

排错按现象走。所有玩家进不去且提示服务器满员,先M2在线人数参数和LoginGate MaxUser,再核对列表端口;部分人能进部分卡角色选择,查RunGate、DBServer、数据库日志;人数到固定值集体掉线,查DBServer MaxConnect、MySQL max_connections、网关MaxUser;单IP多号进不去但换IP正常,查网关MaxConnectOfIP、LoginGate MaxClientPerIP、多开限制;新GOM/GEE试用授权有底层人数锁,文本改MaxOnline不生效,需要正式授权或更换完整引擎包,不属于改配置能解决。 每次只改一处并小流量压测,避免M2、网关、数据库同时改完无法定位是哪层卡住。

地图级人数不是全局三处之一,但常和在线限制混在一起。MapInfo.txt可按地图写人数上限、刷怪密度,某张BOSS图设50人、主城设500人,不影响全服全局上限;若只改M2全局不调单图,会出现全服能进但热门图进不去。单地图满员和全局满员要分开看M2提示,全局满走上面三处,单图满走MapInfo和刷新参数。

备份顺序按改前做:!Setup.txt、LoginGate.ini、RunGate.ini/Config.ini、Dbsrc.ini/DBServer.ini、MySQL my.ini、登录器列表各留一份;改完先单机多开模拟50到100人,再外网放200、500、1000阶梯压测,观察M2在线列表、Gate连接数、DBServer存档耗时、MySQL线程数和服务器CPU内存,哪一层先到顶就回退对应参数而不是继续加全局人数。