首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp.net实体数据源性能问题

asp.net实体数据源性能问题
EN

Stack Overflow用户
提问于 2019-12-19 23:46:39
回答 1查看 104关注 0票数 0

简单测试页正在使用~4s通过实体数据源加载小数据集。页面克隆使用SQL数据源加载相同的数据需要70 SQL。

运行在访问Azure DB、EF和SQL的本地服务器上的性能也是一样的。运行SQL分析器,与SQL几乎相同和快速(~20 Ran )。

Azure托管了asp.net web应用程序targeting.Net 4.7.2和EF6。项目中使用相同数据模型的其他页面存在类似的性能问题。我在类似的项目中使用过EF6,没有问题。

代码语言:javascript
复制
  <div>
    <asp:GridView ID="GridView1" runat="server" DataSourceID="edsLists"></asp:GridView>
  </div>

  <asp:EntityDataSource ID="edsLists" runat="server" 
      ConnectionString="name=DatabaseEntities" 
      DefaultContainerName="DatabaseEntities" EnableFlattening="False" 
      EntitySetName="Lists" AutoGenerateWhereClause="True" Where=""  
      Include="">
  </asp:EntityDataSource>


    <div>
      <asp:GridView ID="GridView1" runat="server" DataSourceID="edsLists"></asp:GridView>
    </div>

  <asp:SqlDataSource ID="edsLists" runat="server" ConnectionString="<%$ ConnectionStrings:dbConnectionString %>" SelectCommand="SELECT * FROM [Lists]">
  </asp:SqlDataSource>

更新:这里的是从跟踪输出的:

下面是使用SQL数据源的相同页面的跟踪:

Performance EF6(test1)/SQL(test2):

EN

回答 1

Stack Overflow用户

发布于 2019-12-20 08:02:01

如果平台行为不正常,并且由于而产生额外的延迟。如果问题正在发生,请通过诊断和解决叶片、诊断学即服务以及选择CLR profiler来识别慢度来收集分析器跟踪。

Recommendation

  • 为您的web应用程序启用或检查应用程序洞察。
  • 获取进程的内存转储
  • 运行远程Profiler

此外,我建议您运行实体框架的NHibernate配置文件,以查看任何N+1问题,如果在运行之前修复了它。

如果您有任何问题或关切,请告诉我。

为了给您一个要点,下面是我们对其进行故障排除的过程。虽然它与点网内核相关,但在蔚蓝的web应用程序中,您也可以发现它与asp.net类似:

  • 去诊断和解决问题刀片->诊断工具。如果检测到堆栈是“ASP.NET核心”,则将列出以下工具。如果没有,您可以选择右边的选项。
  • 现在,“收集.NET事件探查器跟踪”列在ASP.NET核心堆栈中。
  • 点击“收集.NET剖析器”。为了使.NET核心应用程序能够发出ETW事件,需要进行一些代码级别的更改。收集ASP.NET核心Profiler跟踪的需求消息如下所示。确保web应用程序符合要求。
  • 有两种数据收集模式:收集和分析数据&仅收集数据。“只收集数据”不会生成分析报告。

-如果您选择“只收集数据”

单击“收集事件探查器跟踪”按钮开始收集,就像正常的.NET应用程序一样。

  • 数据收集完成后,您可以单击该链接下载.zip文件(对角线),并通过perfview在本地进行分析。

最后5个分析会话列在当前的“收集.NET事件探查器跟踪”选项卡中。

  • 单击“这里”可跳转到“诊断工具”选项卡,以查看所有会话。从那里你可以下载数据和报告。每个会话中都有磁盘空间使用信息。根据这些信息,您可以删除一些会话以释放磁盘空间。

-如果你选择“收集和分析数据”

您不仅可以下载压缩文件,还可以打开分析报告。.NET核心支持在中提供。

  • Profiler跟踪分析仪中的.NET核心支持

“.NET核心慢速需求”选项卡在Profiler跟踪报告。它显示了这个跟踪中最慢的ASP.NET核心请求。

每个慢请求列表的详细信息包括调用堆栈和完整请求跟踪:

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59418269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档