大师网-带你快速走向大师之路 解决你在学习过程中的疑惑,带你快速进入大师之门。节省时间,提升效率

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

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

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

  1. Nuget安装OrleansDashboard:

    Install-Package OrleansDashboard
    
  2. 修改配置文件 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数量、错误率、吞吐量、平均响应时间及整体的性能情况。

Overview
Overview

Grains

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

Grain
Grain

Silos

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

  1. 当前服务器的CPU、内存、Grain是使用情况;
  2. Silo性能分析;
  3. 消息的发送和接收状况和Silo的一些属性;
  4. 分布着哪些Grains;
Silo.png
Silo.png

本文是使用一个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();
}

测试结果:

PersonGrain
PersonGrain

Silo
Silo

参考链接: