【问题标题】:mvc-mini-profiler - working with a load balanced web role (azure et al)mvc-mini-profiler - 使用负载平衡的 Web 角色(azure 等)
【发布时间】:2011-07-28 01:10:24
【问题描述】:

我相信 mvc mini profiler 有点“天赐良机”

我已将它合并到一个针对 Azure 平台的新 MVC 项目中。 我的问题是 - 如何处理跨服务器(角色实例)障碍的分析?

这可能吗?

【问题讨论】:

    标签: azure mvc-mini-profiler


    【解决方案1】:

    我不明白为什么您需要对这些应用进行任何不同的分析。您想要分析您的应用在生产服务器上的行为 - 继续做吧。

    单个请求仍将在单个实例上执行,您将从同一实例获取数据。如果您还想分析位于不同物理层的服务,则需要不同的方法;涉及通过内部端点进行的通信,我确信迷你分析器不支持开箱即用。不过修改应该没那么复杂。

    但是,如果您想对物理上分开的层进行剖析,我会以不同的方式进行。具体来说,独立地分析每一层。因为这就是我要优化它的方式。如果您在探查器语句中包装对其他层的调用,您可以看到问题所在并且仍然能够解决它。

    【讨论】:

    • 当请求在单个实例上执行时,探查器的默认实现是将结果存储在当前 ASP.Net 缓存中,然后使用 ajax 调用提供给客户端 -并且不能保证该 ajax 调用会访问同一台服务器。
    • 老实说,为了进行分析,我会直接在远程实例上进行分析,甚至不通过负载均衡器。我想在分析时消除外部服务,而不是弄清楚它们是否与它有任何关系。但是话虽如此,我也同意你的回答,不管你如何让它工作。但是,我会再次在实例上直接使用 RDP 进行分析。
    • 我部分同意你的看法......但是,有时你想调查生产中发生的问题 - 即在正常运行负载下 - 如果你使用 RDP,你就不能真正做到这一点将 Web 服务器从负载平衡器列表中取出。不过,这只是一种情况,我接受您可以使用 RDP 解决方案的许多其他情况。
    • Stuart,您在哪里看到它从负载均衡器列表中取出?由于我不相信您,我继续进行了测试 - 负载均衡器将请求路由到我的 两个 实例(成功),同时我 RDP 到实例 0。
    • 我上次检查时,这个网站是为了知识交流,所以不客气 :o) 顺便说一句,如果这是真的,你是对的,它会使分析器对此毫无用处(非常真实的)场景。
    【解决方案2】:

    默认情况下,mvc-mini-profiler 使用HttpRuntime.Cache 存储和传递其结果。这会在多实例环境中引起一些问题。

    如果您使用多个实例,那么您可以通过以下方式完成这项工作:

    • 将 Http Cache 更改为 AppFabric Cache 实现(或某些 MemCached 实现)
    • 为您的配置文件结果使用替代存储策略(代码包括 SqlServerStorage 作为示例?)

    显然,无论您选择哪种策略,都需要比单实例实施更多的时间/资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-04
      • 2013-04-18
      相关资源
      最近更新 更多