4

最近,我们公司专注于我们长期开发的应用程序的性能。我们在性能测试期间注意到的一件事是,某些方法进行了如此多的数据库调用(超过 500 个查询)

那么这就带来了一个问题,比如哪些方法进行了如此多的调用,以及应该如何优先考虑首先重构哪个方法。当我们最初尝试重构其中一些方法时,我们观察到减少往返次数需要付出很多努力。原因是我们的数据访问层很大程度上依赖于 NHibernate ORM 框架,我们发现我们从开发之初就完全滥用了 Lazyloading 配置。这就是为什么往返次数很大并且对性能有很大影响的原因。并且仅仅纠正延迟加载配置会产生很多回归。

因此,我们必须找到一种方法来收集每个 http 请求的数据库调用次数。我见过一些工具,如 Application Insight 或 AppDynamics 为所有依赖调用提供了整体结果。但我只是想知道有没有办法以不同于使用这些框架的方式收集这些痕迹?

例如,每次发出http请求时,我们是否可以在控制器中设置属性,即每当在方法的调用堆栈中调用ExecuteQuery()或SqlDataAdapter.Fill方法时,是否可以增加计数器。我正在寻找类似的解决方案。

任何帮助是极大的赞赏。

提前感谢您的所有建议。

4

1 回答 1

2

对这类事情使用 Stackify Prefix:

https://stackify.com/prefix/

查看 SQL 查询:包括 SQL 参数、受影响的记录以及下载结果集所用的时间。

于 2017-05-04T09:49:36.393 回答