首页 > Linux性能优化测试 > 游戏服务器性能测试总结

游戏服务器性能测试总结

2014年10月28日

游戏服务器性能测试总结
http://blog.chinaunix.net/uid-429659-id-3511467.html
游戏快要上线测试了,所以要测试一下性能,我们游戏服务器是用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(最大文件描述符数):
([email protected])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
文章来自:http://blog.csdn.net/skyman_2001/article/details/7322105

本文的评论功能被关闭了.