【问题标题】:MVC3 site running fast locally, very slow on live hostMVC3 站点在本地运行速度很快,在现场主机上运行速度很慢
【发布时间】:2012-03-04 01:35:56
【问题描述】:

因此,我的网站已经上线了几个星期,但遇到了一些速度问题。这是一个在 discountasp.net 上使用 MySQL 的 MVC3 站点。

我清理了网站的结构,让它在我的本地机器上运行得非常快,大约 800-1100 毫秒的加载时间,没有缓存。奇怪的是,当我尝试访问实时站点时,我得到大约 15-16 秒的时间,有时冻结长达 30 秒。我在 web.config 中关闭了视图状态,现在本地加载时间为 1.3 秒(是的,奇怪的是更长了一点),而实时站点大部分时间下降到 8-9 秒,但这仍然很差。

如果不针对我的情况提出这个问题(因为可能有一百万个原因网站变慢),我很好奇是否有任何原因导致本地 Visual Studio 服务器或 IIS Express 之间的加载时间运行得如此之快而现场网站运行速度如此之慢。任何代码明智或依赖明智的影响都不会相同吗?我只是想不出一个会影响现场而不是本地的原因。

有什么想法吗?

进一步的想法:我将站点设置为子文件夹,我正在使用 IIS URL 重写映射到子域。我以前没有听说过这会导致问题,但这可能是个问题吗?

进一步更新: 所以我上传了一个简单的页面,它只查询我拥有的最大表中的所有记录,没有缓存。在我的本地机器上,它的平均时间约为 110 毫秒(看起来仍然很慢......),而在实时站点上,它通常是两倍以上的时间。如果我多次访问数据库来加载页面,那么这将严重影响页面加载时间是有道理的。我仍然不确定问题是否与LINQ或MySQL或MVC有关(甚至可能是discountasp.net)。

【问题讨论】:

  • 嗯,很明显要问的是你在本地有什么硬件设置,你必须远程玩什么?
  • 我的本地机器只是一台小型台式电脑,远程主机是 discountasp.net,我假设它的设置很好。
  • 你有不同数量的请求有点奇怪,额外的请求来自什么?哪个请求需要时间?是图像还是超时?
  • 这是来自谷歌分析的 _utm.gif。查看 chrome 中的 net 选项卡,虽然它似乎是在服务器端消耗 95% 的加载时间,但一旦服务器的响应被发回,所有其他文件的加载速度非常快。

标签: asp.net-mvc asp.net-mvc-3 performance


【解决方案1】:

我曾经遇到过类似的问题,罪魁祸首是用户会话的初始化。事实证明,每个请求都有很多对象被读/写到会话状态,但由于某种原因,这并没有影响我的本地机器(我可能在本地启用了 InProc 模式)。

所以试着给你的一些控制器添加一个属性,看看是否能加快速度:

[SessionState(SessionStateBehaviour.Disabled)]
public class MyController : Controller
{

另一方面,我进行了一些测试,令人惊讶的是,在每次请求时从数据库中读取其中一些对象比读取一次要快,然后将它们置于会话状态。这有点道理,因为生产中的会话状态模式是SqlServer,并且序列化/反序列化显然比仅从DataReader 为属性分配值要慢。另外,在部署新版本的程序集时,更改它具有避免反序列化错误的良好副作用...

顺便说一句,即使是 992 毫秒也太多了,恕我直言。你可以使用输出缓存来减少它吗?

【讨论】:

  • 我同意 992 毫秒也太多了,你真的希望它低于 200 毫秒,理想情况下我会说(除非你有一个很好的借口)。
  • 嗯,我会检查一下,但我认为我对会话状态的承诺并不多。无论如何,我会调查一下。是的,我同意 992 毫秒仍然太多了 :) 当我打开缓存时,我把它降到了更少,但由于这是一款浏览器游戏,屏幕上的大部分内容无论如何都需要从数据库中提取,所以它是有限的我可以应用它。第一个页面加载完成后,所有其他请求都非常小而且很快,这是第一个页面加载有点拖累=/
  • 鉴于它的 MVC,您根本不应该有会话状态。第一个请求是指 JIT 请求,因为预计这会很慢
【解决方案2】:

正如我上面提到的,我为开发关闭了缓存,但仅在我的本地计算机上。我没有意识到 WITHLIVE 服务器打开的缓存存在问题,我从未关闭过,因为我认为它有助于修复速度慢!现在一切都说得通了:)

修复了我的缓存问题(IQueryable 位于数据集顶部,本应缓存整个表。>_>)我的速度提高了 10 倍。

感谢所有提供帮助的人!

【讨论】:

    猜你喜欢
    • 2021-05-02
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 2014-08-08
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多