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

游戏独立聊天服务器,单进程(单线程)并发 1W 连接, 10W 条信息每秒的负载,实际部署会否有坑?

  •  
  •   2225377fjs · 2016-06-13 15:57:21 +08:00 · 2944 次点击
    这是一个创建于 3116 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为在新项目中准备直接独立一个聊天服务器,将聊天直接从游戏服务器独立出来,准备到时候直接拿一台单独的物理服务器来做聊天,对于同一个游戏服,所有玩家都直接连到同一个进程上去。(主要是现在游戏服来做聊天比较耗,而且独立出来,只需要一台物理服务器就能撑很多个游戏服的聊天了,也比较好管理)

    这样就是一个服的玩家对应聊天服务器上的一个进程,现在自己简单压测,因为游戏服单服上线设计是 1W 人,所以按照 1W 并发来测试, 100%CPU 的情况下应该最大是 12-13W 条信息每秒,那么上限设置在 10W 条每秒,这个数据肯定是能够满足我们游戏服聊天的需求了。

    但是因为是第一个项目准备这么做,所以心里还是有点担心,不知道是否有一些自己没有考虑到的情况,不知道论坛里面有没做个这种类似工作的,求给点经验教训啥的?

    另外:因为大多数都是广播数据,没有存储的需求,只有玩家之间的私聊如果不在线的话有临时存储的需求,这个是直接存Mongodb了,总的来说存储的需求很低。。

    11 条回复    2016-06-13 22:32:37 +08:00
    yxaaa123
        1
    yxaaa123  
       2016-06-13 18:37:33 +08:00
    不太可能吧。。。单线程?
    suckli
        2
    suckli  
       2016-06-13 19:04:55 +08:00
    全局服务最好热备,并且做好扩展的准备
    另外一台机器只跑一个单进程单线程的,浪费了。
    2225377fjs
        3
    2225377fjs  
    OP
       2016-06-13 19:05:15 +08:00
    @yxaaa123 在 Linux 下的 epoll 单进程(单线程)要支持 1W 的 TCP 长连接没什么难度啊,消息的处理占了更多的 CPU ,现在的压测就是按照 1W 长连接并发来测试的,大多数的执行都是在 C 层级的 loop 里面效率还是可以,上层消息处理以及逻辑的脚本代码并不多,速度还是没啥问题。主要是现在担心会有其他没有考虑到的坑,所以上来问问。
    2225377fjs
        4
    2225377fjs  
    OP
       2016-06-13 19:08:38 +08:00
    @suckli 额,肯定不会只跑单进程单线程了,生产环境机器标准是 16 核 32 线程, 96G 内存的,是准备开 20 个聊天进程,用于支撑 20 个游戏服的聊天。热备啥的,倒是没有考虑过,因为本身聊天不是关键业务,所以要求不是特别高。
    Syc
        5
    Syc  
       2016-06-13 19:09:07 +08:00 via Android
    固定单线程好浪费啊,为什么不多线程处理,保底单线程,只能协调多线程
    2225377fjs
        6
    2225377fjs  
    OP
       2016-06-13 19:12:43 +08:00
    @Syc 额,因为一台服务器要起很多个聊天进程,所以不存在浪费的问题,每一个游戏服对应一个聊天进程,本身游戏服与服之间基本是没有关联的,可能有一些跨服小喇叭之类的功能,不过这些都是很冷门的需求,进程间通信的开销并不大。采用单进程单线程主要还是因为开发所选用的技术的原因( Gevent )。
    denghongcai
        7
    denghongcai  
       2016-06-13 19:22:44 +08:00
    还是像 2 楼说的做好热备和随时扩展的准备,这样的套路原来用过,没什么问题
    Mutoo
        8
    Mutoo  
       2016-06-13 19:24:37 +08:00
    做好《工信部:所有网络游戏聊天记录需要保留半年以上》的准备。
    suckli
        9
    suckli  
       2016-06-13 19:41:35 +08:00
    如果你还担心有什么坑的话,先拿一个服来灰度一下,没问题在全服上
    2225377fjs
        10
    2225377fjs  
    OP
       2016-06-13 21:03:51 +08:00
    @denghongcai 额,有老司机心里就有底了。。
    mengzhuo
        11
    mengzhuo  
       2016-06-13 22:32:37 +08:00 via iPhone
    天然分服就好…记得上报当前人数给管理服,好利用完资源
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3673 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 04:20 · PVG 12:20 · LAX 20:20 · JFK 23:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.