网游服务器一个诡异的问题,求帮助

2015-06-09 12:43:28 +08:00
 bystand3r
公司做网游的,最近在线人数在增长,不过在晚上高峰时候出现突然掉线的情况。经过我们观察,同时在线达到32000左右的时候服务器就会卡一下,导致4、5千人掉线……分析了各种原因,也问过机房是否有相关限制,都没有解决。

我们游戏内的部分界面是由webview实现的(比如个人资料修改什么的)
web方面的架构(Linux、Nginx、php、Mysql)
游戏方面的架构(Windows、游戏各个服务组件、SqlServer)

出现问题是时间是晚上8-9点左右,高峰时段,具体时间不定,状况为在线人数达到32000时SqlServer进出口流量飙升,负载上升(由于web那边很多数据需要使用SqlServer,连带着Linux负载也很高),然后就是疯狂掉线到20000多人才好,之后由于高峰过去的原因(还有部分玩家没有再回来)本日的同时在线就不能再跑到30000多了。

我们对比了服务器上的数据,在线31000以下的时候服务器都很正常,负载也不高,各项指标都很平稳……但一达到上述的临界点就悲剧了……

求大神指点,可能是什么地方出现的问题???跪谢~
3121 次点击
所在节点    问与答
23 条回复
402645707
2015-06-09 12:48:26 +08:00
不贴
402645707
2015-06-09 12:50:10 +08:00
日志和系统性能占用图表没人知道是为什么
可能和内存 或路由配置并发连接有关
SakuraSa
2015-06-09 12:52:35 +08:00
会不会是由于缓存设置得不够大,热数据超出缓存大小后,导致一部分热数据不断被重新加载的原因呢?
我也没经验,就是一猜……
fangjinmin
2015-06-09 13:00:34 +08:00
单从你的描述不好判断是什么原因。你说的32000人在线的时候会出现卡顿,可能是个表象。
最好是查一下SQLSEVER的8点到9点的日志,看一下都有过什么样的检索导致的。
cevincheung
2015-06-09 13:02:30 +08:00
没有足够的信息可以去判断症状。或许你需要补充更多的日志信息。
fxxkgw
2015-06-09 13:18:18 +08:00
sysctl -a 里面的net.ipv4.****这些参数配置可以检查下
benjiam
2015-06-09 13:22:18 +08:00
netstat -s 里面看 为什么断开了连接
oott123
2015-06-09 13:23:51 +08:00
我猜是 32767 人的时候开始掉线…
402645707
2015-06-09 13:36:03 +08:00
@oott123 那应该掉线到16383.XD
yahoo21cn
2015-06-09 13:49:26 +08:00
3楼说的有道理
RemRain
2015-06-09 14:44:15 +08:00
# fgrep -C3 32000 /usr/include/linux/ext2_fs.h
/*
* Maximal count of links to a file
*/
#define EXT2_LINK_MAX 32000


@oott123 我猜他们的文件系统是 ext2
sivacohan
2015-06-09 16:31:21 +08:00
@oott123 32767是什么梗?
finab
2015-06-09 16:41:17 +08:00
@sivacohan 溢出了
scr
2015-06-09 17:30:45 +08:00
我猜是某个自增字段溢出了.
bystand3r
2015-06-09 18:53:06 +08:00
@finab 这个我们已经排查过……程序上没有这方面的问题
@RemRain 游戏服务器是windows的,文件系统是NTFS
xenme
2015-06-09 19:26:19 +08:00
既然是突然 SQL 流量飙升,就看看是哪里的请求导致的流量飙升么
pheyer
2015-06-09 19:29:45 +08:00
2的15次方是32786
xiaowangge
2015-06-09 20:48:17 +08:00
服务器用得哪家云?

没有监控?报表?

Memcached 用没用?
bystand3r
2015-06-10 00:20:19 +08:00
@pheyer
@xiaowangge
多台自家服务器。数据库最小的整数类型也是int无符号,不存在32767溢出的问题。
经过排查感觉是某个网关服务器负荷过高了,也有可能是短链接没有及时释放的问题,症状还没有解决……还在纠结中😭
ETiV
2015-06-10 00:46:16 +08:00
"状况为在线人数达到32000时SqlServer进出口流量飙升"

我不知道 sql server 有没有类似 MySQL的general-log 的开关, (之前搜过, 貌似叫什么服务监视器?)

看这飙升时间段内的所有发过来的 SQL 语句, 并日志记录下来. 看那些最多, 再做进一步排查.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/197181

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX