DNF私服「跑不出五国」排查修复图文攻略
实战机:公益云-香港 8H8G(GYY-XG-8H8G) · 系统 CentOS 7 · DP无脑一键端 · 全程真实命令与输出
故障现象:网关正常,客户端拉不出频道列表根因:服务端进程全部未运行修复耗时:约20分钟
〇、故障现象与结论速览
✗ 故障现象BaoYu 网关正常(Gateway run ok),MySQL 正常,但客户端登录后选区列表空白,五个国家频道一个都出不来。
✓ 排查结论游戏服务进程(df_stun_r / df_manager_r / df_game_r 等十几个)一个都没在运行。网关有自启,但
./run 不会开机自动执行,上一次手动启动的进程也没有存活。一句话根因:“五国”就是 df_game_r 跑起来的国家频道进程。网关只是门卫,门卫活着不代表里面的服务在营业——没有执行 ./run(或执行后进程未存活),频道列表自然是空的。
一、六步排查全过程(附真实输出)
1
体检系统环境:先排除机器本身的问题
$ cat /etc/os-release | head -3; free -h; df -h / | tail -1
NAME=”CentOS Linux” VERSION=”7 (Core)” ← 教程要求7系 ✓
Mem: 7.6G total / 6.8G free ← 内存充足 ✓
/dev/vda1 40G 9.2G 31G 23% / ← 磁盘正常 ✓
NAME=”CentOS Linux” VERSION=”7 (Core)” ← 教程要求7系 ✓
Mem: 7.6G total / 6.8G free ← 内存充足 ✓
/dev/vda1 40G 9.2G 31G 23% / ← 磁盘正常 ✓
系统、内存、磁盘全部正常 → 问题方向锁定服务端自身。
2
查进程:全军覆没的 df_xxx_r(关键一步)
$ ps -ef | grep -iE ‘game|dof|bywg|mysql’ | grep -v grep
mysql 3688 … /usr/local/mysql/bin/mysqld … ← 只有 MySQL 活着
(过滤 df_stun_r / df_manager_r / df_channel_r / df_game_r …)
→ 结果:游戏进程一个都没有!
mysql 3688 … /usr/local/mysql/bin/mysqld … ← 只有 MySQL 活着
(过滤 df_stun_r / df_manager_r / df_channel_r / df_game_r …)
→ 结果:游戏进程一个都没有!
$ ls -la /home/neople/game/ | grep -E ‘df_game_r|Script’
-rwxr-xr-x df_game_r 36360954 ← 主程序在(今天13:22刚更新过)
-rwxr-xr-x Script.pvf 603850517 ← 600MB PVF 也在
-rwxr-xr-x df_game_r 36360954 ← 主程序在(今天13:22刚更新过)
-rwxr-xr-x Script.pvf 603850517 ← 600MB PVF 也在
文件齐全但进程全无 → 这就是”跑不出五国”的直接原因。继续往下查为什么没跑。
3
查端口:佐证服务端没营业
$ ss -tulnp | grep -E ‘8188|3306|10012|10052|10056|11012|7000|7001|7200’
tcp *:8188 users:((“BaoYu”,…)) ← 网关活着(难怪能登录到选区界面)
tcp :::3306 users:((“mysqld”,…)) ← 数据库活着
→ 10012/10052/10056/11012/7000/7001/7200 全部没有监听
tcp *:8188 users:((“BaoYu”,…)) ← 网关活着(难怪能登录到选区界面)
tcp :::3306 users:((“mysqld”,…)) ← 数据库活着
→ 10012/10052/10056/11012/7000/7001/7200 全部没有监听
网关 8188 只是”登录通道”,频道列表靠 df_game_r 在 10012/10052/10056 上注册。端口空 = 频道空。
4
单跑 df_game_r 抓现场:发现”静默退出”陷阱
$ cd /home/neople/game
$ timeout 15 env LD_PRELOAD=”/dp2/libdp2pre.so” ./df_game_r siroco12 start
ERROR: ld.so: object ‘/dp2/libdp2pre.so’ … cannot be preloaded: ignored.
**********************************************************
* DUNGEON & FIGHTER Open Beta Test on 2005.08.10~ *
**********************************************************
[!] Check Args Success
[!] Server key Check OK
[!] Init Log Success ← 然后……进程直接退出(exit 0),没有任何报错!
$ timeout 15 env LD_PRELOAD=”/dp2/libdp2pre.so” ./df_game_r siroco12 start
ERROR: ld.so: object ‘/dp2/libdp2pre.so’ … cannot be preloaded: ignored.
**********************************************************
* DUNGEON & FIGHTER Open Beta Test on 2005.08.10~ *
**********************************************************
[!] Check Args Success
[!] Server key Check OK
[!] Init Log Success ← 然后……进程直接退出(exit 0),没有任何报错!
大坑:df_game_r 依赖 run 脚本里先启动的十几个基础服务(monitor/manager/relay/bridge/channel/dbmw/guild/auction/point/statics/coserver/community/gunnersvr/zergsvr)。基础服务没起来时单跑 df_game_r,它不会报错,只会静默退出——很多人在这里误以为”服务端坏了”。
5
完整执行 ./run:全套服务拉起
$ cd /root && nohup ./run > /tmp/run.out 2>&1 & ← nohup 防止 SSH 断开杀进程
$ sleep 30; ps -ef | grep df_ | grep -v grep
df_stun_r / df_monitor_r / df_relay_r / df_manager_r / df_channel_r
df_bridge_r / df_dbmw_r ×3 / df_guild_r / df_statics_r / df_coserver_r
df_community_r / gunnersvr / secagent … 全部拉起!
df_game_r siroco12 start
df_game_r siroco52 start
df_game_r siroco56 start ← 三国频道开始加载
$ sleep 30; ps -ef | grep df_ | grep -v grep
df_stun_r / df_monitor_r / df_relay_r / df_manager_r / df_channel_r
df_bridge_r / df_dbmw_r ×3 / df_guild_r / df_statics_r / df_coserver_r
df_community_r / gunnersvr / secagent … 全部拉起!
df_game_r siroco12 start
df_game_r siroco52 start
df_game_r siroco56 start ← 三国频道开始加载
run 脚本会先起基础服务,最后 sleep 1 秒一个地拉起三个 df_game_r。此时还没有上线,因为 600MB 的 PVF 才刚开始读。
6
耐心等 15 分钟,看日志等上线(不是卡死!)
$ tail -f /home/neople/game/log/siroco12/Log*.init
[13:54:13] – All DB Open Success ← 14个数据库全连上
[13:54:53] – Loading Skills Success
[13:54:54] – Loading Items …
[13:57:07] – Loading Avatar Roulette Success ← 中间2分钟一行没有,其实在狂算CPU
[14:08:41] GeoIP Allow Country Code : CN/HK/KR/MO/TW
$ ss -tlnp | grep -E ‘10012|10052|10056’
LISTEN *:10012 df_game_r (siroco12) ← 上线!
LISTEN *:10052 df_game_r (siroco52)
LISTEN *:10056 df_game_r (siroco56) ← 五国全部注册完成
[13:54:13] – All DB Open Success ← 14个数据库全连上
[13:54:53] – Loading Skills Success
[13:54:54] – Loading Items …
[13:57:07] – Loading Avatar Roulette Success ← 中间2分钟一行没有,其实在狂算CPU
[14:08:41] GeoIP Allow Country Code : CN/HK/KR/MO/TW
$ ss -tlnp | grep -E ‘10012|10052|10056’
LISTEN *:10012 df_game_r (siroco12) ← 上线!
LISTEN *:10052 df_game_r (siroco52)
LISTEN *:10056 df_game_r (siroco56) ← 五国全部注册完成
修复成功。top 里能看到 siroco12 吃满一核(nice -20 最高优先级)、另两个各 50%+,三实例并发加载 600MB PVF 就是要 15 分钟左右。CPU 拉满 + 日志在动 = 正常加载,别手贱重启。
二、本端实际端口表(安全组照这个开,别照教程抄!)
| 端口 | 协议 | 归属 | 说明 |
|---|---|---|---|
| 10012 / 11012 | TCP / UDP | df_game_r (siroco12) | 1区2频道 主频道 |
| 10052 / 11052 | TCP / UDP | df_game_r (siroco52) | 5区2频道 |
| 10056 / 11056 | TCP / UDP | df_game_r (siroco56) | 5区6频道 |
| 7000 | TCP / UDP | df_bridge_r | 桥接 |
| 7001 | TCP | df_Script_r | 频道脚本 |
| 7200 | TCP | df_relay_r | 中继 |
| 2311 / 2312 / 2313 | UDP | df_stun_r | 打洞 |
| 8188 | TCP | BaoYu 网关 | 登录网关 |
重要:网上教程通篇让你开 11011/10011,但本端频道端口是 10012/10052/10056 + 11012/11052/11056。安全组没开对,就算五国跑起来客户端也连不上——这是第二个大坑。31003/9006 本端并未使用,不用开。
三、避坑清单(本次实战踩过的坑)
| 坑 | 现象 | 正确姿势 |
|---|---|---|
| 只跑了网关 | 能登到选区界面但列表空白 | 网关≠服务端,每次开机后必须 cd /root && ./run |
| 以为卡死就重启 | 日志停在 Loading 十几分钟不动 | top 看 df_game_r 在吃 CPU 就是正常加载,等够 15 分钟 |
| 单跑 df_game_r | 静默退出,毫无报错 | 必须用 run 全套启动,基础服务是前置依赖 |
| SSH 断开杀进程 | 跑完关窗口,回来进程全没了 | 用 nohup ./run > /tmp/run.out 2>&1 & 启动 |
| 端口照抄教程 | 服务起来了还是连不上 | ss -tlnp 看实际监听端口,安全组照实开 |
| DP 插件缺失 | LD_PRELOAD 报 cannot be preloaded | 不影响跑五国;要镶嵌/14键功能需补回 /dp2 目录 |
| 内存不够 | 三频道跑满后 7.1G/7.6G | 8G 机器别再叠服务;free -h 里 available 低于 300M 要警惕 |
四、日常运维命令速查
# 启动全套服务端(含五国)
cd /root && nohup ./run > /tmp/run.out 2>&1 &
cd /root && nohup ./run > /tmp/run.out 2>&1 &
# 看加载进度(判断卡没卡)
tail -f /home/neople/game/log/siroco12/Log*.init
# 确认五国进程(应看到 siroco12 / siroco52 / siroco56 三行)
ps -ef | grep df_game_r | grep -v grep
# 确认频道端口上线(应有 10012/10052/10056)
ss -tlnp | grep df_game_r
# 看内存与CPU
free -h; top -bn1 | grep df_game_r
# 重启网关(只动网关,不影响频道)
cd /root && ./Restart
开机自启建议:把
nohup /root/run >> /var/log/dof-run.log 2>>&1 & 写入 /etc/rc.local 并 chmod +x /etc/rc.d/rc.local,重启后服务端自动拉起(网关 BaoYu 已有自启)。© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END




暂无评论内容