今天是公司的一款FPS网游第一次TT(技术测试)的第一天,因为一些技术上的失误和准备不足,使TT正式对外开放的时间足足推迟了1个半小时。因为这款游戏被关注度很高,所以玩家在论坛上骂声不断,用户感受比较差。分析这次TT推迟的技术原因,主要有两个:1、是技术上的失误,没有把login服务器上的对外的IP限制给关掉,造成用户在登录launch服务器后,无法登录游戏。2、是技术准备不足,上面的原因,使launch服务器一对外就因为玩家不断的连接尝试,大量的并发连接而当掉。
技术上的失误,没有把login服务器上的对外的IP限制给关掉,造成用户在登录launch服务器后,无法登录游戏。之前为了防止外部玩家在游戏对外开放前登录,我们在服务器上做了IPSEC来限制只有公司IP可以登录服务器。但在游戏对外开放时,因为某些原因,没有成功的把服务器上的IPSEC关掉。造成用户在登录launch服务器后,因无法登录游戏而反复尝试launch服务器,使launch服务器卡死。因为问题的表象是launch服务器卡死,所以没有发现问题的真正原因是后面的login服务器的IP限制没有去掉。
从上面的问题来看,是找错了问题的真正所在。而没有找对问题的关键是我们没有对游戏对外连接的端口及用户进入游戏的连接过程没有进行深入的分析。其实,发现做了IP限制的方法很简单,只要用公司外的IP的机器,连一下游戏,用TCP/IP协议分析软件查看一下,就马上能找到问题所在了。从这点来讲,这也是技术准备不足所造成的。2、是技术准备不足:因为用户无法登录游戏,使launch服务器一对外就因为玩家不断的连接尝试大量的并发连接而当掉。
其实如果准备充足的话,应该在这种可能有大并发的服务之前加一个防火墙(用linux的iptable的connlimit就可以实现),来限制并发连接数。这样程序不会在为大并发而当掉,用户也可以慢慢的连进游戏中去。