主要症状是在第一次访问网页的时候,需要从数据库读取数据的这个网页需要10~25秒才能打开,有时候甚至会提示超时,第二次就是秒开了,隔一段时间再来打开的话,又会很慢。
下面是服务器配置,微软云国际版亚洲东部,个人使用,所以配置比较低,但以前用512MB RAM都没问题,另外刚刚将虚机的配置上调了一个等级,第一次仍然慢,没有丝毫改观,由此个人感觉主要问题不在硬件上。
那么有人遇到过类似问题的吗?网上搜了很多,也设置了很多东西,没有什么效果。
补充一个情况:操作系统是英文版windows server 2008 data center,自己下载安装的中文语言包,后来发现进“组策略”管理的时候不停报错。
更新一下进度:升级了主机的配置,然后开机玩了一会儿,然后降低到原来的配置,问题貌似解决了,很诡异。
第二次查询是因为缓存
ef首次加载会慢.
已经将ef的dll预编译进去了,另外首次加载不应该这么慢才对。
code first?
db first
首次打开网站,不是SQL的问题。是网站自己在建立服务,加载缓存等等。不过一般都在10秒内完成。
隔一段时间再来打开的话,是网站没被访问,IIS回收了程序池
另一个没有使用数据库的网站可以秒开。
@蒋坤_MEZW: 没有使用数据库。是不是也没有后台?或者后台处理比较简单。开启速度也会比较快。
@盟怀部孩: 一样是asp.net mvc 4.0,我觉得应该还是数据库这块的问题,要说配置太低其实也可以理解,但以前512MB内存也没问题啊。
@蒋坤_MEZW:后台处理的项目对第一次加载影响很多的。比如你网站里面有加载缓存的功能啊或者有其它的服务啊等等都会影响第一次打开时间
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足
5、网络速度慢
6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)
8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
9、返回了不必要的行和列
10、查询语句不好,没有优化
这个看过很多遍了
写个 小的demo 直接在服务器本地测试下 就知道是不是数据库问题了
这个站点就是迁移过来的,以前没有遇到问题,在512MB RAM的Windows server 2008 (64)上都跑过,都可以很快打开。
@蒋坤_MEZW: 在有问题的服务期测试
@conan_lin: 也很慢,所以应该就是数据库的问题。
根据你的描述我只能做大致的推测:
DB连接通常为:OPEN -->HOLD --> CLOSE
虽然上面看上去是废话,但是要记住一点:记录集在用的时候才OPEN。用完该释放资源就释放资源。
所以建议楼主review下代码,画出持久层的整体流程图,在某些关键的节点OPEN和CLOSE。