游戏服务器性能测试总结

转载请注明,来自:http://blog.csdn.net/skyman_2001

游戏快要上线测试了,所以要测试一下性能,我们游戏服务器是用erlang写的,所以自然而然的选择用erlang来写测试机器人。用erlang写机器人挺方便的,因为erlang对网络通信支持很强大,网络消息通过binary match就能很方便的处理。还有erlang OTP的gen_fsm用来实现状态机很方便。机器人的大概结构是一个gen_server进程用作机器人管理器(管理所有机器人的创建、销毁和发送操作指令),机器人有个“组”的概念,可以将N个机器人设为一个组,这样可以同时操作一组机器人(比如500个机器人场景行走,500个机器人打怪,。。。)。每个机器人是个gen_fsm进程,管理机器人的各种状态切换。用erlang实现测试机器人挺简单的,下面讲讲测试时遇到的一些问题,希望对其他人有所帮助。

在同一台机器上(Windows XP)压机器人,每组500个,当压到1000多个时,出错了,显示“system limit”错误,用google一搜索,原来是erlang本身的限制ERL_MAX_PORTS,默认是1024,可以在操作系统设置环境变量ERL_MAX_PORTS来修改最大端口数,也可以在erl的参数里指定,比如:

erl -env ERL_MAX_PORTS 4096

就是将最大端口数改为4096,可以通过erlang:system_info(check_io)来查看max_fds(最大文件描述符数):
(robot@127.0.0.1)1> erlang:system_info(check_io).
[{name,erts_poll},
 {primary,'WaitForMultipleObjects'},
 {fallback,false},
 {kernel_poll,false},
 {memory_size,7073},
 {total_poll_set_size,6},
 {lazy_updates,false},
 {batch_updates,false},
 {concurrent_updates,false},
 {max_fds,8192}]
可以看到,max_fds是 ERL_MAX_PORTS的2倍。

关于erlang本身的系统限制说明,请看这里:http://www.erlang.org/doc/efficiency_guide/advanced.html

我们服务器是在Linux下运行,Linux有很多强大的性能检测工具,这里介绍一下我们用到的:

1. 查看最耗性能的进程:top命令

top命令是个很常用很强大的命令,可以查看系统中最耗CPU、内存的进程是哪些。详细的top命令使用讲解请看:http://www.cnblogs.com/zhangzhang/archive/2012/02/08/2342701.html
这里特别提一下,top命令是可以查看某个进程是在CPU哪个核上运行的,方法是按f建,再按j键,然后按回车键,就会显示这一列出来了。

2. 查看详细的 CPU消耗:sar命令

sar命令是个很强大很复杂的命令,可以用来查看CPU、内存、网卡流量等。这里讲如何查看每个CPU核的详细消耗,这样:

sar -P ALL 1 5
会输出CPU每个核的%user,%nice,%system,%iowait,%idle消耗比(每1秒输出1次,共输出5次)。

3. 查看网络流量:sar命令

sar -n DEV 1 5

会输出网卡的每秒钟接收到的包数目、每秒钟发送出去的包数目、每秒钟接收到的字节数、每秒钟发送出去的字节数、每秒钟接收到的压缩包数目、每秒钟发送出去的压缩包数目、每秒钟接收到的多播包的包数目(每1秒输出1次,共输出5次)。

sar -r -b

显示当天的内存相关的历史记录(很有用)

关于sar命令的详细使用说明,请看:http://roclinux.cn/?p=1647

4. 观察整体的内存使用情况:free命令

free -m
表示以MB为单位显示。关于free命令输出信息的详细说明,请看:http://qa.taobao.com/?p=2265

整个测试的过程就是这样,根据测试结果发现,最耗的部分有2块:1.场景对象的广播;2.怪物的巡逻AI。

5. IO监控

iostat -dx 1 观察磁盘读写情况,如果有十几M的读/写,就要留意了。

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。
idle小于70%,IO压力就较大了,一般读取速度有较多的wait。

参考:
http://www.orczhou.com/index.php/2010/03/iostat-detail/
http://www.php-oa.com/2009/02/03/iostat.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值