我使用的是 Windows Server 2008,在 Hyper-V VM 中运行。系统性能非常差。我们很确定这是由于内存不足造成的。我查看了如何知道我的 Windows Server 2003 是否需要更多内存?,而且从每秒输入 300 多页来看,我很确定问题出在内存上。
但是,我问的是一个更广泛的问题。我想让管理层关注等待这些页面错误所浪费的时间。有没有办法确定等待分页或其他资源所花费的时间?我特别感兴趣的是交互式用户所花费的时间,但包含非交互式使用的数据也会有所帮助。
为了澄清起见,这看起来不像是在抱怨:
该系统速度太慢,以至于分钟,当一个 notepad.exe 窗口处于活动状态时,激活已打开并显示的第二个 notepad.exe 窗口。这只是激活。性能还不错。我认为这相当于每天浪费了几十个工时。
我正在寻找一种方法来让管理层明白我们浪费了多少时间。这种情况发生的时候我们实际上没有十个工时可以浪费。
抱歉,我没有提供更多细节。
此服务器用于 SharePoint (WSS 3.0) 开发。它运行 IIS 7,每个开发人员至少设置一个应用程序池。每个开发人员都有一个或多个 Web 应用程序,每个应用程序都设置在分配给该开发人员凭据的 AppPool 中。我们正在运行 Visual Studio 2008 SP1 和 SQL Server 2008。SQL Server 数据位于与操作系统不同的虚拟磁盘上。
我曾见过多达 8 名开发人员同时使用该系统。服务器配置了 2GB 的 RAM,由于主机的限制,目前增加 RAM 并非易事。我希望如果我能提出足够的理由来纠正这个问题,那么这个问题将得到纠正,形式如下:这就是浪费的时间。
编辑
感谢您的回答和评论。我同意解决方案 - 将 SharePoint 负载放到 4-8GB 服务器上,并将 SQL Server 移动到第二个 2-4GB 服务器上。
但我的问题更像是:是否有任何性能计数器或工具可以告诉我时间等待页面读写花费了多少时间?有没有人能告诉我等待排队磁盘 I/O 花费了多少时间?
可以获得诸如“每秒输入的页面数”之类的性能计数器,但很难说该计数器的哪些值“太多”。如果有“计数器”可以显示花费了多少时间,对我的目的来说会更好因为每秒输入的页面数。
答案1
此服务器用于 SharePoint (WSS 3.0) 开发。它运行 IIS 7,每个开发人员至少设置一个应用程序池。每个开发人员都有一个或多个 Web 应用程序,每个应用程序都设置在分配给该开发人员凭据的 AppPool 中。我们正在运行 Visual Studio 2008 SP1 和 SQL Server 2008。SQL Server 数据位于与操作系统不同的虚拟磁盘上。
我曾见过多达 8 名开发人员同时使用该系统。服务器配置了 2GB 的 RAM,由于主机的限制,目前增加 RAM 并非易事。我希望如果我能提出足够的理由来纠正这个问题,那么这个问题将得到纠正,形式如下:这就是浪费的时间。
甚至无需考虑 SharePoint 2007 的硬件要求,最多可容纳 8 名开发人员,并拥有自己的应用程序池。我认为SQL Server 是另一个 VM,但如果它是同一台 Win2k8 机器,那么毫无疑问问题是什么。
由于多种因素,VisualStudio 开发的 AppPools(2005-2008 版本)很容易增长到每个 AppPool 150MB-250MB。250mb x 8devs = 已使用 2gb。我们不要忘记操作系统本身以及可能的 SQL Server 所需的内存。简而言之:您根本没有足够的 RAM。尽可能多地加载 RAM。如果它至少从后台角度和可能的前台角度解决了服务器的大部分“缓慢”问题,我不会感到惊讶。
仅供参考:Microsoft 建议 SharePoint 2007 应用程序服务器至少配备 4GB 空间(关联) 但实际上,微软的任何东西都会尽可能地消耗资源。现在在同一个 URL 中,他们提到独立 SharePoint 服务器的最低 2GB 空间,但如果开发人员直接地和他们的一起在该服务器上工作自己的应用程序池,很明显 IIS 占用了 AppPools/Sites 的所有可用内存。不要使用建议的最小 RAM。如果可能的话,尝试将 RAM 要求增加一倍、三倍、四倍(预算允许)。
编辑:您提到 SQL Server数据位于单独的虚拟磁盘上,但 SQL Server 是否安装在同一 SharePoint 服务器上? SharePoint 服务器上还有多少可用存储空间? 这些额外因素很容易消耗服务器资源,不应忽视。
再次编辑:因为你提到(而我没读到)“由于主机的限制,RAM 目前并不重要”,只有一个真实的解决方案:购买一台新主机。2GB 不足以运行 SharePoint/SQL/IIS/其他程序。很抱歉,但恕我直言,运行此程序的机器至少应有 8GB RAM。
OP 编辑后进行编辑:
但我的问题更像是:是否有任何性能计数器或工具可以告诉我等待页面读写所花费的时间?有哪个可以告诉我等待排队磁盘 I/O 所花费的时间?
我还没有遇到过你的情况,但有一篇很好的文章(关联) 来自 Microsoft TechNet 关于监控指标的基础知识。我不确定等待排队磁盘 I/O 所花的时间是否是最好的来获得你想要的东西(我认为有管理层的支持)。
可以获得诸如“每秒输入的页面数”之类的性能计数器,但很难说该计数器的哪些值“太多”。如果有“计数器”可以显示每秒输入的页面数花费了多少时间,对我的目的来说会更好。
来自 Windows Networking 的一篇文章(关联) 在 Server 2003 上对这些计数器的解释比我更好。FTA:
这内存\页数/秒计数器表示测量间隔期间对磁盘进行的分页操作数,这是用于监视可能 RAM 不足以满足服务器需求的指示的主要计数器。这里的一个好主意是配置一个 perfmon 警报,当系统上每个分页磁盘每秒的页面数超过 50 个时触发该警报。这里要监视的另一个关键计数器是 内存\可用字节,如果这个计数器大于你机器实际 RAM 的 10%,那么你可能拥有足够的 RAM,不必担心。
你应该做两件事 内存\可用字节计数器:为此计数器创建性能日志并定期监控它,以查看是否出现任何下降趋势,并设置警报,当其低于已安装 RAM 的 2% 时触发。如果出现下降趋势,您可以监控 进程(实例)\工作集对于每个进程实例,确定哪个进程消耗了越来越多的 RAM。 进程(实例)\工作集测量每个进程的工作集大小,表示进程可以处理的分配页面数,而不会产生页面错误。相关计数器是 内存\缓存字节数,它测量系统的工作集,即内核线程在不产生页面错误的情况下可以寻址的分配页面的数量。
最后,另一个表明 RAM 不足的指标是 内存\转换故障/秒,用于测量备用列表中最近修剪的页面被重新引用的频率。如果此计数器随着时间的推移开始缓慢上升,则可能表明您已到达一个临界点,即不再有足够的 RAM 来让服务器正常运行。
所以我想说这个解释确实解决了你的指标问题,以及你对这些指标对你的实际意义的理解。性能监视器有点棘手,特别是如果你不完全理解计数器在宏观上的含义。我通常会阅读有关计数器的内容,因为很容易忘记它们的“现实世界”含义。
答案2
听起来您需要开始使用 perfmon。您需要为诸如内存(可用兆字节(我猜它将接近或为 0)、已使用字节数百分比)之类的东西设置计数器,也许还有一些磁盘监视器。您的硬盘很可能在不停地消耗,使您的页面文件增长到最大大小。但是,我仅提供这些建议,以便您可以自己查看性能。问题的答案在第一个答案中:内存。如果您所讨论的服务器的内存限制为 2GB,那么您需要购买或拼凑一个额外的服务器。我不确定您是否拥有另一个许可证,但 2GB 的内存不足以运行 SharePoint,更不用说您正在运行的大量其他应用程序/环境了。话虽如此,没有什么比一个好的挑战更好了。:) 祝你好运!
答案3
服务器并未针对前台任务进行优化,因此在服务器上切换记事本窗口并不是有效的性能指标。您需要启动 Process Explorer 或 Task Manager,开始查看其中的一些统计数据,然后也许执行一些性能计数器,看看它们返回了什么。还要检查服务器上正在运行的其他任务(您没有说明它的角色是什么,因此无法更具体)。