网站公告 | 泰斗网校全新上线了,可以和论坛用户登录同步,如果遇到登录问题联系管理员解决
查看: 3131|回复: 2
收起左侧

[枫叶飘零] Photon Server之性能测试

[复制链接]

[枫叶飘零] Photon Server之性能测试[复制链接]

枫叶飘零 发表于 2018-7-26 09:47:34 [显示全部楼层] 回帖奖励 |倒序浏览 |阅读模式 回复:  2 浏览:  3131
性能测试(也称为负载测试)是用于验证服务器端实现和硬件是否能够实际处理预期负载一种有用且强烈推荐的方法。
经常被问到一个问题:单个Photon服务器可以处理多少并发用户(CCU)?

答案并不那么简单。 这取决于几个因素,例如:
•每个游戏室的客户数量
•消息速率(每个房间和第二个消息的数量)
•邮件大小
•协议类型(可靠/不可靠)
•客户平台
•服务器硬件规格,等等。

在典型的使用案例中,我们有~200 msg / room / s。

这是标准配置:
•四核CPU(例如Intel Xeon E3-1270 v3,3.5GHz)。
•8 GB RAM。
•1 GBps NIC /上行端口速度。

Photon可以在标准配置中为每台服务器处理2000 - 3000 CCU。

Photon瓶颈通常不是CPU,而是NIC /流量。流量池通常比CPU更昂贵,因此使用较小的服务器通常更有效。

通常,裸机服务器比VM提供更好的结果。

但是,上面的数字只是对预期结果的粗略估计。您需要使用自己的代码库进行一些调整并运行负载测试,以便为您自己的用例获取可靠的数字。

确定测试场景

在运行负载测试之前,请您需要明确一下几个问题。
1.您的服务器有哪些硬件规格?
2.你的游戏有多少CCU?
3.你有什么类型的游戏,如何完成配对,你有不同的服务器用于不同的功能吗?
4.您是否使用了Photon Server SDK中未经修改的代码,或者您是否拥有自定义代码?如果是这样 - 主要变化是什么?
5.每个房间有多少客户?
6.发送了多少条消息?

◦例如:4个客户端/房间,每100毫秒调用一次RaiseEvent()
◾传入:4 * 10 msg / s = 40 msg / s
◾输出:4 * 40 msg / s = 160 msg / s
◾总计:200 msg / room / s

7.平均邮件大小是多少?
◦例如:◾200msg/ room / s * 200字节= ~40 kByte / s / room
◾expected:1000 CCU / 250房间=> ~10 Mbyte / s总计

使用上面示例中的数字,您已经接近100 MBit / s上行链路端口速度的上限。

一些客户端库具有内置的“网络流量统计”,可以帮助您找到这些问题。

构建测试客户端

Photon经过优化,可处理大量连接和流量。 但是,客户端SDK和库不适用于负载测试。 客户端无法以与Photon相同的方式进行优化。
在大多数情况下,当您想要运行负载测试时,“游戏客户端”连接实现。 因此,您可能会认为重新使用现实世界的游戏客户端进行负载测试很容易。 但是,如果您尝试使用Photon的客户端SDK构建“负载测试客户端”,客户端将成为瓶颈,您将获得错误的,误导性的结果。

构建一个好的测试客户端是负载测试的真正挑战。

建议采用以下方法:
•记下游戏客户端发送的典型操作/事件序列。
•构建一个简单的Photon Server应用程序,模仿游戏客户端的行为。
•使用Photon的服务器到服务器功能在“S2S负载测试应用程序”和“服务器端”Photon之间建立连接。
配置Photon

Photon / PhotonServer.config:
•使用默认配置,不进行任何更改。
•默认配置针对广泛的用例进行了优化。任何更改都可能产生无法预料的影响,并且会使理解和分析测试结果变得更加困难。

记录/ log4net.config:
•确保在所有log4net.config文件中使用“INFO”日志级别。
•过度登录“DEBUG”级别会对性能造成影响,需要避免!

运行测试
•在单独的物理机器上托管Photon S2S负载测试客户端。
•每个“服务器端”Photon至少需要两个“S2S负载测试机”才能均匀分配负载。

在运行测试之前,请确保在服务器端和客户端计算机上安装性能计数器并创建性能计数器日志:
1.停止Photon,如果它正在运行
2.from Photon Control - > Performance Counters - >安装计数器,创建记录集
3.从命令行启动“perfmon”。在“数据收集器集” - >“用户定义”下:在右窗口窗格中选择photonperflog - >属性 - >将采样间隔设置为1秒(默认值为1分钟,这里没有给出足够的数据)
4.启动Photon
5.Photon控制 - >性能计数器 - >开始记录
6.运行负载测试
7.Photon控制 - >性能计数器 - >停止记录
8.从C:\ perflogs \ admin中获取性能日志
9.从\ deploy \ bin_win64 \ log和\ deploy \ log中获取日志文件

如果从Photon Control创建计数器日志失败,请从\ deploy \ bin_tools \ perfmon运行ths命令:

logman.exe创建计数器photonperflog -si 00:01 -v mmddhhmm -cf logman.config.txt

分析绩效并找出瓶颈

要分析负载,请在perfmon中加载性能计数器日志。

在Photon Server SDK的“doc”文件夹中,有一个“photon-perfcounter.pdf”文件,其中列出了所有计数器并进行了简要说明。

1.估算“总体”负载:对于第一次估算,请查看“明显”计数器,例如:CPU负载,对等/连接活动数,每个进程的内存使用量,断开连接,网络流量(字节输入/输出/总计)等等

这些计数器应该让您知道服务器是否按预期处理负载,或者您是否有任何瓶颈,需要进一步调查。


2.外出流量:

如上所述,客户端通常是瓶颈。检查“传出”流量的处理情况,例如Comsent Resent / sec(如果客户端不发送ACK,Photon重新发送命令),排队可靠命令的数量(发送的命令数量,但是还没有承认)等等。

如果这些值很高,很可能是您遇到了客户端问题。

您应该在任何情况下检查这些计数器,如果您发现了一个潜在的瓶颈,请解决它并重新运行测试。


3.传入流量(服务器忙吗?):

检查服务器是否正忙,通过比较“活动”I / O,业务和ENet线程当前“正在处理”的数量,ENet队列中是否有消息等。

这些计数器通常与CPU /内存使用计数器相关,因此通常没有太多额外的知识可以从中获得。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 1泰斗币 +1 热心值 +1 收起 理由
ml112 + 1 + 1 原创内容

查看全部评分

+1
3125°C
2
  • zcp
  • 缈狐灵
过: 他们
因分享而快乐,学习以自强!
zcp 发表于 2018-7-29 15:09:12 显示全部楼层
66666666666666666666
因分享而快乐,学习以自强!
缈狐灵 发表于 2018-8-4 18:58:26 显示全部楼层
怎么感觉在看文档……写得好标准的样子
因分享而快乐,学习以自强!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VR/AR版块|Unity3d|Unreal4|新手报道|小黑屋|站点地图|沪ICP备14023207号-9|【泰斗社区】-专注互联网游戏和应用的开发者平台 ( 浙ICP 备 13006852号-15 )|网站地图

© 2001-2013 Comsenz Inc.  Powered by Discuz! X3.4

1
QQ