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 数量、错误率、吞吐量、平均响应时间及整体的性能情况。
Grains
Grains 模块统计出当前所有激活的 Grains 以及 Grains 的数量变量趋势,我们可以通过点击每个 Grain 详情查看更详细信息,详情下包括 Grain 下的所有方法的调用情况及当前 Grain 归属的 Silo:
Silos
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();
}
测试结果: