因为在新项目中准备直接独立一个聊天服务器,将聊天直接从游戏服务器独立出来,准备到时候直接拿一台单独的物理服务器来做聊天,对于同一个游戏服,所有玩家都直接连到同一个进程上去。(主要是现在游戏服来做聊天比较耗,而且独立出来,只需要一台物理服务器就能撑很多个游戏服的聊天了,也比较好管理)
这样就是一个服的玩家对应聊天服务器上的一个进程,现在自己简单压测,因为游戏服单服上线设计是 1W 人,所以按照 1W 并发来测试, 100%CPU 的情况下应该最大是 12-13W 条信息每秒,那么上限设置在 10W 条每秒,这个数据肯定是能够满足我们游戏服聊天的需求了。
但是因为是第一个项目准备这么做,所以心里还是有点担心,不知道是否有一些自己没有考虑到的情况,不知道论坛里面有没做个这种类似工作的,求给点经验教训啥的?
另外:因为大多数都是广播数据,没有存储的需求,只有玩家之间的私聊如果不在线的话有临时存储的需求,这个是直接存Mongodb了,总的来说存储的需求很低。。
1
yxaaa123 2016-06-13 18:37:33 +08:00
不太可能吧。。。单线程?
|
2
suckli 2016-06-13 19:04:55 +08:00
全局服务最好热备,并且做好扩展的准备
另外一台机器只跑一个单进程单线程的,浪费了。 |
3
2225377fjs OP @yxaaa123 在 Linux 下的 epoll 单进程(单线程)要支持 1W 的 TCP 长连接没什么难度啊,消息的处理占了更多的 CPU ,现在的压测就是按照 1W 长连接并发来测试的,大多数的执行都是在 C 层级的 loop 里面效率还是可以,上层消息处理以及逻辑的脚本代码并不多,速度还是没啥问题。主要是现在担心会有其他没有考虑到的坑,所以上来问问。
|
4
2225377fjs OP @suckli 额,肯定不会只跑单进程单线程了,生产环境机器标准是 16 核 32 线程, 96G 内存的,是准备开 20 个聊天进程,用于支撑 20 个游戏服的聊天。热备啥的,倒是没有考虑过,因为本身聊天不是关键业务,所以要求不是特别高。
|
5
Syc 2016-06-13 19:09:07 +08:00 via Android
固定单线程好浪费啊,为什么不多线程处理,保底单线程,只能协调多线程
|
6
2225377fjs OP @Syc 额,因为一台服务器要起很多个聊天进程,所以不存在浪费的问题,每一个游戏服对应一个聊天进程,本身游戏服与服之间基本是没有关联的,可能有一些跨服小喇叭之类的功能,不过这些都是很冷门的需求,进程间通信的开销并不大。采用单进程单线程主要还是因为开发所选用的技术的原因( Gevent )。
|
7
denghongcai 2016-06-13 19:22:44 +08:00
还是像 2 楼说的做好热备和随时扩展的准备,这样的套路原来用过,没什么问题
|
8
Mutoo 2016-06-13 19:24:37 +08:00
做好《工信部:所有网络游戏聊天记录需要保留半年以上》的准备。
|
9
suckli 2016-06-13 19:41:35 +08:00
如果你还担心有什么坑的话,先拿一个服来灰度一下,没问题在全服上
|
10
2225377fjs OP @denghongcai 额,有老司机心里就有底了。。
|
11
mengzhuo 2016-06-13 22:32:37 +08:00 via iPhone
天然分服就好…记得上报当前人数给管理服,好利用完资源
|