![服务器性能问题 - Server 2008、SQL 2008 和 Hyper-V](https://linux22.com/image/500237/%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%80%A7%E8%83%BD%E9%97%AE%E9%A2%98%20-%20Server%202008%E3%80%81SQL%202008%20%E5%92%8C%20Hyper-V%20.png)
我的服务器性能很差。
访问网站时经常发生这种情况,但更常见的情况是,在我第一次加载网站时发生。服务器/webapp 仍处于开发阶段,因此只有我一个人访问它。
具体来说,超时错误。只能发布一个链接,因此屏幕截图如下...
我开始在数据库虚拟机上运行 perfmon,在加载了几个页面后,它就上升到了 100!以下是截屏。
当它达到 100 时,它仍会加载页面,只是有延迟。在其他时候,我可以想象它会更高。
而且,显然它在 100 时截止,因此它可能会更高,但没有显示出来。
这个问题似乎很接近描述这个问题,但我不确定该怎么做:SQL Server 运行缓慢但 CPU 正常
至于数据库访问,我的查询都是通过使用 linq-to-sql 自动优化的。我没有对数据库进行任何索引……但现在的负载只是我对其进行的。
所以,到目前为止,我的直觉告诉我这是某种 Hyper-v 配置问题。
眼镜:
单台服务器:Xeon E5520 @2.27GHz(2 个处理器)。Windows 2008 Ent. 6GB 内存,细分为:2GB - 父级 2GB - 运行 SQL 2008 Web Edition 的 DB 服务器 1.25GB - 运行 IIS7 的 Web 服务器 .75GB - DNS,其他
Hyper-V 是由托管公司设置的,可能只需双击并单击下一步、下一步、下一步直到完成,所以我认为必须有一些配置的最佳实践,这将产生很大的不同。
救命!谢谢!
肖恩。
答案1
首先,除非您在表上有索引,否则 Linq-To-SQL 不会得到优化。任何说不是这样的人都是错的。
Windows 2008 搭配 SQL 2008 运行 1.25 GB 的 RAM 不算什么。Windows 本身就需要这么多。几乎没有 RAM 用于数据库。启动 SQL Server 就需要大约 70 MB。除非开始将数据加载到内存中,否则需要为过程缓存留出空间。由于所有内容都是动态 SQL(通过 Linq To SQL),因此您需要大量的空间用于过程缓存,因为很可能您对数据库运行的每个命令都需要重新编译。
当问题发生时,您能从 SQL Server 发布一些性能监控数据吗?
答案2
如果有任何疑问,Hyper-V 对我和我的托管公司来说都是全新的。
http://technet.microsoft.com/en-us/library/dd440865(WS.10).aspx
我正在以动态方式运行我的 DB VHD,因此,当我删除快照并等待它合并时,我将转换为 Fixed。
直通是最好的,但会花费更多时间,所以现在尝试一下这个。
可能需要对我的所有三个 VHD 执行此操作。
你们认为这会带来多大的影响?
答案3
幸好这还没有投入生产。哎呀。
因此,在将 VHD 转换为 Fixed 的过程中,它现在不知何故损坏了,我无法让它加载 VM。甚至无法返回到旧版本并重新加载。
我收到错误:
停止 c000021a 会话管理器无法创建受保护的前缀系统进程意外终止
每当我尝试重新启动该虚拟机时。
考虑清除服务器并不再使用 HyperV。(哦,顺便说一下,SQL 需要 2gb......与 1.25 没有太大区别)。
由于机器有 6gb 并且我只需要在 sql2008 上运行一个带有一个数据库的网站,所以也许这是可行的方法。