我使用EF-6和MVC在asp.net中构建了一个Web应用程序。
最近,我在一个新的IIS服务器上设置了这个网站,即带有IIS8和SQL Server 2016的Windows Server 2012 R2。
现在,我有非常糟糕的加载时间。我认为,这必须与IIS做一些事情。因为当我在我的开发人员笔记本电脑上启动网站并将其配置为使用生产数据库时,加载时间为220毫秒,而在SQL上花费了48毫秒。没关系,因为SQL-Server位于VPN的另一端。
但是当我在(生产)IIS服务器(同一服务器上的数据库)上执行相同的代码时,我会在使用Block中获得大约1808ms的一致时序 - 在SQL-Connection上花费1.7ms。 / p>
代码非常简单:
public ActionResult Index()
{
List<User> users;
using (MiniProfiler.Current.Step("DB-Query"))
{
users = db.Users.OrderByDescending(u => u.IsActive).ThenBy(u => u.ShortName).ToList();
}
return View("Index", users);
}
我尝试了远程调试,但是单步执行只是在db.Users()和}大括号之间有相同的1800ms延迟。
请注意,这是最简单的控制器方法之一,生产数据库为空。使用数据库中的实际数据,控制器方法大约需要100倍的时间。在60-90秒内,我的笔记本电脑在.6-.9秒内完成。
我尝试过的事情:
答案 0 :(得分:0)
通过将连接字符串从“localhost”更改为“127.0.0.1”来解决问题。以前,字符串是:
Data Source = localhost; Initial Catalog = ...; Integrated Security = True; Pooling = False; MultipleActiveResultSets = True
现在是:
中提到了这一点Data Source = 127.0.0.1; Initial Catalog = ...; Integrated Security = True; Pooling = False; MultipleActiveResultSets = True