V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
bystand3r
V2EX  ›  问与答

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

  •  
  •   bystand3r · 2015-06-09 12:43:28 +08:00 · 3303 次点击
    这是一个创建于 3484 天前的主题,其中的信息可能已经有所发展或是发生改变。
    公司做网游的,最近在线人数在增长,不过在晚上高峰时候出现突然掉线的情况。经过我们观察,同时在线达到32000左右的时候服务器就会卡一下,导致4、5千人掉线……分析了各种原因,也问过机房是否有相关限制,都没有解决。

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

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

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

    求大神指点,可能是什么地方出现的问题???跪谢~
    23 条回复    2015-06-10 10:56:36 +08:00
    402645707
        1
    402645707  
       2015-06-09 12:48:26 +08:00 via Android
    不贴
    402645707
        2
    402645707  
       2015-06-09 12:50:10 +08:00 via Android
    日志和系统性能占用图表没人知道是为什么
    可能和内存 或路由配置并发连接有关
    SakuraSa
        3
    SakuraSa  
       2015-06-09 12:52:35 +08:00
    会不会是由于缓存设置得不够大,热数据超出缓存大小后,导致一部分热数据不断被重新加载的原因呢?
    我也没经验,就是一猜……
    fangjinmin
        4
    fangjinmin  
       2015-06-09 13:00:34 +08:00
    单从你的描述不好判断是什么原因。你说的32000人在线的时候会出现卡顿,可能是个表象。
    最好是查一下SQLSEVER的8点到9点的日志,看一下都有过什么样的检索导致的。
    cevincheung
        5
    cevincheung  
       2015-06-09 13:02:30 +08:00
    没有足够的信息可以去判断症状。或许你需要补充更多的日志信息。
    fxxkgw
        6
    fxxkgw  
       2015-06-09 13:18:18 +08:00
    sysctl -a 里面的net.ipv4.****这些参数配置可以检查下
    benjiam
        7
    benjiam  
       2015-06-09 13:22:18 +08:00
    netstat -s 里面看 为什么断开了连接
    oott123
        8
    oott123  
       2015-06-09 13:23:51 +08:00 via Android
    我猜是 32767 人的时候开始掉线…
    402645707
        9
    402645707  
       2015-06-09 13:36:03 +08:00 via Android
    @oott123 那应该掉线到16383.XD
    yahoo21cn
        10
    yahoo21cn  
       2015-06-09 13:49:26 +08:00
    3楼说的有道理
    RemRain
        11
    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
        12
    sivacohan  
       2015-06-09 16:31:21 +08:00 via Android
    @oott123 32767是什么梗?
    finab
        13
    finab  
       2015-06-09 16:41:17 +08:00
    @sivacohan 溢出了
    scr
        14
    scr  
       2015-06-09 17:30:45 +08:00
    我猜是某个自增字段溢出了.
    bystand3r
        15
    bystand3r  
    OP
       2015-06-09 18:53:06 +08:00
    @finab 这个我们已经排查过……程序上没有这方面的问题
    @RemRain 游戏服务器是windows的,文件系统是NTFS
    xenme
        16
    xenme  
       2015-06-09 19:26:19 +08:00
    既然是突然 SQL 流量飙升,就看看是哪里的请求导致的流量飙升么
    pheyer
        17
    pheyer  
       2015-06-09 19:29:45 +08:00
    2的15次方是32786
    xiaowangge
        18
    xiaowangge  
       2015-06-09 20:48:17 +08:00
    服务器用得哪家云?

    没有监控?报表?

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

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

    看这飙升时间段内的所有发过来的 SQL 语句, 并日志记录下来. 看那些最多, 再做进一步排查.
    molinxx
        21
    molinxx  
       2015-06-10 02:58:52 +08:00 via Android
    难道是西山居?今天攻防卡掉一片一片的~
    pheyer
        22
    pheyer  
       2015-06-10 09:20:02 +08:00
    @bystand3r 如果不是数据库呢?
    stackpop
        23
    stackpop  
       2015-06-10 10:56:36 +08:00
    是不是 listen queue 满了?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2730 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 07:57 · PVG 15:57 · LAX 23:57 · JFK 02:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.