Orleans Dashboard 是来自 OrleansContrib 提供的一个Orleans 报表工具。通过 Orleans Dashboard 我们能很方便的监控 Silos 状态、Grains 分布情况、异常率、吞吐量、平均响应时间等,这样我们就能了解集群的运行平稳性,也能排除错误和性能瓶颈。
初始项目的代码根据之前的案例 Demo-OrleansCluster 稍微做了调整,Orleans Dashboard 的使用方法还是比较简单的。
-
Nuget安装OrleansDashboard:
Install-Package OrleansDashboard
-
修改配置文件 OrleansConfiguration.xml,Globals节点下添加BootstrapProviders节点:
<Globals> ...... <BootstrapProviders> <Provider Type="OrleansDashboard.Dashboard" Name="Dashboard" /> </BootstrapProviders> </Globals>
完成以上工作就可以启动Silo了。
Silo启动成功后,Orleans Dashboard 默认访问地址是 localhost:8080。如果你想修改端口或者添加安全验证,可以根据配置参数来调整 Configuring the Dashboard 。
注意:启动过程中可能会出现下面这个错误:
System.AggregateException: 发生一个或多个错误。 ---> System.DllNotFoundException: 无法加载 DLL“libuv”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。
在 OrleansDashboard 的 issues下已有人提到,可以关注一下 :https://github.com/OrleansContrib/OrleansDashboard/issues/62
我暂时采用的方案是: 将 \packages\Libuv.1.10.0\runtimes\win-x86\native\libuv.dll) 复制到 bin\Debug\ 下,重新启动就可以跑起来了。
Overview
在 Orleans Dashboard 概述中可以了解到当前集群激活的Grains数量、Silos数量、错误率、吞吐量、平均响应时间及整体的性能情况。
OverviewGrains
Grains模块统计出当前所有激活的Grains以及Grains的数量变量趋势,我们可以通过点击每个Grain详情查看更详细信息,详情下包括Grain下的所有方法的调用情况及当前Grain归属的Silo:
GrainSilos
Silos模块概述和Grains类似,报表会呈现当前集群Silo的健康状态,通过Silo的详情我们可以了解到:
- 当前服务器的CPU、内存、Grain是使用情况;
- Silo性能分析;
- 消息的发送和接收状况和Silo的一些属性;
- 分布着哪些Grains;
本文是使用一个Silo实例来实现,如果是集群,可以参考 Demo-OrleansCluster 。Silo的配置文件内加上OrleansDashboard的配置即可。如果是同一台机器,注意端口号分别指定一下。
在Client端添加测试代码,直接粗暴点来个死循环:
var random = new Random();
while (true)
{
var grainId = random.Next();
var grain = GrainClient.GrainFactory.GetGrain<IPersonGrain>("beck" + grainId);
grain.SayHelloAsync().Wait();
}
测试结果:
PersonGrainSilo
网友评论