如何解决如何确定服务器端性能约束 ASP.NET MVC 应用程序
- 我正在开发一个 ASP.NET MVC 5 网络应用
- 仪表板有几个图表,可以通过 ajax 异步检索数据
- 他们通常从内存缓存中提取结果,除非用户手动单击刷新按钮,然后从 sql Server 数据库中提取数据
- 当您加载仪表板页面时,有一个图表需要大约 30 秒,然后出错。似乎这阻碍了所有其他图表 ajax 响应,并且它们都报告了大约 30 秒的时间
- 但是,如果您随后单击这些相同图表之一上的刷新按钮,它会在 27 毫秒内执行该任务!这是从数据库重新加载,而不是从缓存中重新加载。
这里发生了什么?起初我认为这是一个客户端问题,可能是 30 秒的请求首先被触发,其他请求排在它后面,但 devtools 显示它们都同时被触发。所以它必须是服务器端。为什么拉表单内存缓存需要这么长时间?我是否达到了来自 IIS 或其他东西的最大请求限制(我对此表示怀疑,因为这是在我的本地开发机器上,所以我无法想象单个页面的这种加载会最大化)?还有什么会导致这种情况,或者你能指出我的方向吗?我承认我过去几乎没有做过性能分类,所以我什至不知道从哪里开始。
这是一些开发工具图片。
在整个页面加载期间查看所有这些请求加载。请注意,大多数需要大约 30 秒。
在这里,如果我们比较相同请求的时间......第一个是在完整页面加载期间完成的,如上图所示,耗时 31.31 毫秒并从缓存中检索数据(我可以从 mini-分析器,因为我有 sql 登录,并且此请求没有 sql 方面)。然后我在页面完全加载后单击此图表上的刷新按钮,那时,请求只用了 27 毫秒,并且必须从 sql Server 而不是缓存中获取数据)。
相比之下(要查看真正的客户端问题),我确实看到其中一个请求已停止。我看到 here chrome 将您限制为 6 个同时请求...我不知道 :) 所以我可以理解为什么如果在 30 秒之后触发,这个请求会被延迟 30 秒。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。