在笔记本电脑上托管查询比在服务器上执行速度更快

在笔记本电脑上托管查询比在服务器上执行速度更快

将 ASP MVC 应用程序发布到 Windows Server 2012 时遇到一个奇怪的问题。

该应用程序相当简单,在访问的大多数页面上,它都会查询服务器上托管的 Access 数据库。

我注意到查询非常慢(通常需要 7-10 秒才能完成),如使用 MiniProfiler 运行应用程序时所显示的那样。

作为一个简单的测试,我决定在我的 Windows 10 笔记本电脑上托管该应用程序,看看是否存在差异,而且它要快得多(大多数查询都在 200 毫秒以下)。

这是我迄今为止尝试过的:

  • 匹配高级应用程序池设置
  • 匹配防火墙设置
  • 启用链路本地多播名称解析 (LLMNR)
  • 确认 ODBC 跟踪已被禁用(32 和 64)
  • 将 Access Backoffice.mdb 文件移动到服务器的 C 盘(与笔记本电脑上相同)
  • 确保 web.config 匹配(除了 connectionString 数据源)
  • 已添加C:\inetpub\wwwroot\websiteC:\Test\Database防病毒扫描排除项
  • 在注册表中将MaxBufferSize键值从 0增加Access Connectivity Engine

有人知道我可以尝试调试此问题的方法,或者任何可能的解决方案吗?

笔记

测试时,我的笔记本电脑和服务器都在同一个网络上,并且我通过 iPad 访问该应用程序。

当我在服务器上通过浏览器使用该应用程序时,我也遇到了同样的缓慢问题(url = 10.0.0.1 或 localhost)

当我从服务器上的控制台应用程序执行完全相同的查询代码时,它运行速度要快得多(与笔记本电脑相当)。我仅通过 asp 应用程序遇到此问题。

笔记本电脑详细信息:

  • 处理器:英特尔酷睿 i7-6700HQ CPU @ 2.60GHz
  • 内存:16.0 GB
  • 操作系统:Windows 10 x64

服务器详细信息

  • 处理器:Intel Xeon CPU E5-2603 v4 @ 1.70GHz(2 个处理器)
  • 内存:32.0 GB
  • 操作系统:Windows Server 2012 x64

连接字符串

我尝试了以下方法:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=W:\My Backoffice.mdb
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Test\My Backoffice.mdb
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\ServerName\W\My Backoffice.mdb
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\ServerName\C\Test\My Backoffice.mdb

使用16.012.0作为ACE.OLEDB版本,其中 W 是用作跨域网络共享的本地服务器驱动器。所有这些都给出了相同的结果。

答案1

如果您的笔记本电脑有 SSD,那就可以解释这一点。SSD 的 IOPS 性能是主轴驱动器的 10 倍。可能值得查看您的 MVC 编码,看看编程中是否有一些处理或代码迭代可能会减慢 Web 应用程序的速度。

相关内容