首页 新闻 会员 周边

如何分析 MiniProfiler提供的性能检测数据(MVC5+EF6)?

0
悬赏园豆:20 [待解决问题]

LZ通过了MVC5+EF6搭建了一个网站,但是出现了一个奇怪的问题,当网站的页面第一次访问的时候会很慢,后面几次就会变快。为了弄清楚原因,我找到了MiniProfiler这个插件来检测页面各个模块执行的时间,通过检测结果,可以清楚的看到执行SQL语句是只花了402ms,dom元素的加载都只是占了很小的一部分时间。但是我没看明白的是,总共花去了5738.0ms,其他时间是在哪里花费的?

 

第一次访问MinProfiler 返回结果

 

第二次访问访问MinProfiler 返回结果

 

 

从原来的5秒一下缩减到100毫秒。

总结下问题:

第一个访问的慢,主要是慢在什么地方?原因是在获取到数据之后的业务处理逻辑上吗?但是为什么第二次又那么快?是因为第二次访问有了缓存吗?

lampon的主页 lampon | 初学一级 | 园豆:139
提问于:2016-08-02 14:44
< >
分享
所有回答(3)
0

这个不需要动用这个nb的工具了。第一次为什么慢,因为runtime要编译代码。也就是所谓的jit。

如果要改善这种情况。可以对站点预热。

czd890 | 园豆:14412 (专家六级) | 2016-08-02 16:37

 站点预热什么意思?就是先访问下吗?我现在的情况是这样的,程序发布到服务器上之后,第一次访问会比较慢,后面就快了。但是过了一段时间,例如几个小时之后,再去点击页面又变慢了,点了之后又变快

支持(0) 反对(0) lampon | 园豆:139 (初学一级) | 2016-08-02 17:46

@lampon: 

几个小时候后又变慢,是因为几个小时没有访问,iis自动吧进程给回收了。

可以设置回收时间解决这个问题。

多自己google关键词学习。

支持(0) 反对(0) czd890 | 园豆:14412 (专家六级) | 2016-08-03 10:25
0

第一次需要编译,你可以采用预编译的方式发布站点,看是否有所提升。

wolfy | 园豆:2636 (老鸟四级) | 2016-08-02 17:10

是这个吗,我勾上发布之后还是一样。PS:我采用的是web Deploy发布

支持(0) 反对(0) lampon | 园豆:139 (初学一级) | 2016-08-02 17:47
0

你这个原因有可能是后台做了缓存处理。当数据第一次加载之后,放在缓存当中,如果在限定的时间内访问,直接从缓存中取,所以速度快了很多,当超过限定的时间之后,缓存被释放掉了,所以速度又慢了。

wangchao | 园豆:122 (初学一级) | 2018-04-04 14:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册