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

2016-06-13 15:57:21 +08:00
 2225377fjs

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

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

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

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

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

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

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

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

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

© 2021 V2EX