Orleans解决并发之痛(六):Dashboard

Orleans Dashboard 是来自 OrleansContrib 提供的一个 Orleans 报表工具。通过 Orleans Dashboard 我们能很方便的监控 Silos 状态、Grains 分布情况、异常率、吞吐量、平均响应时间等,这样我们就能了解集群的运行平稳性,也能排除错误和性能瓶颈。

初始项目的代码根据之前的案例 Demo-OrleansCluster 稍微做了调整,Orleans Dashboard 的使用方法还是比较简单的。

  1. NuGet 安装 OrleansDashboard:
Install-Package OrleansDashboard
  1. 修改配置文件 OrleansConfiguration.xml,Globals 节点下添加 BootstrapProviders 节点:

  ......
  
    
  

完成以上工作就可以启动 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 数量、错误率、吞吐量、平均响应时间及整体的性能情况。

Orleans解决并发之痛(六):Dashboard_第1张图片
Overview

Grains

Grains 模块统计出当前所有激活的 Grains 以及 Grains 的数量变量趋势,我们可以通过点击每个 Grain 详情查看更详细信息,详情下包括 Grain 下的所有方法的调用情况及当前 Grain 归属的 Silo:

Orleans解决并发之痛(六):Dashboard_第2张图片
Grain

Silos

Silos 模块概述和 Grains 类似,报表会呈现当前集群 Silo 的健康状态,通过 Silo 的详情我们可以了解到:

  1. 当前服务器的 CPU、内存、Grain 是使用情况;
  2. Silo 性能分析;
  3. 消息的发送和接收状况和 Silo 的一些属性;
  4. 分布着哪些 Grains;
Orleans解决并发之痛(六):Dashboard_第3张图片
Silo.png

本文是使用一个 Silo 实例来实现,如果是集群,可以参考 Demo-OrleansCluster 。Silo 的配置文件内加上 OrleansDashboard 的配置即可。如果是同一台机器,注意端口号分别指定一下。

在 Client 端添加测试代码,直接粗暴点来个死循环:

var random = new Random();
while (true)
{
    var grainId = random.Next();
    var grain = GrainClient.GrainFactory.GetGrain("beck" + grainId);
    grain.SayHelloAsync().Wait();
}

测试结果:

Orleans解决并发之痛(六):Dashboard_第4张图片
PersonGrain

Orleans解决并发之痛(六):Dashboard_第5张图片
Silo

参考链接:

  • Orleans
  • Orleans Dashboard
  • OrleansContrib
  • 案例 Demo-OrleansDashboard

你可能感兴趣的:(Orleans解决并发之痛(六):Dashboard)