我的雇主在全国各地有超过一千台服务器(运行SQL Server 2005 x64和一些其他应用程序)。 而在我看来,他们所需要做的事情都力量不足。
具体来说,我觉得服务器根本没有足够的内存来满足机器要求的数量。 目前所有的服务器都有6GB的内存。 用户几乎总是抱怨性能(主要是因为immo,服务器经常陷入分页文件)。
我终于说服了至less在一个盒子上尝试内存升级的能力,并看到结果。 但是,他们希望在度量标准之前和之后,以便他们可以看到费用是合理的。
我的问题是我应该收集哪些指标,以确定性能是否真正提高? 我是一个开发者,所以我不确定如何收集什么(我有一个Perfmon的传递知识)。
编辑:我想我正在寻找特定的计数器来testing。
我build议你通过应用程序在内存升级之前和之后在盒子上加载testing。 从用户angular度模拟负载的性能下降的原因,然后显示内存升级后(如jmeter的东西可以做到这一点的Web应用程序)的改进。 如果你不能在应用程序的负载testing中做到这一点,也许你可以模拟查询。
然后在做这个时,你也可以运行Farseekerbuild议的计数器。 我认为你应该通过前端做的原因是这些是商业人士,他们可能不会得到整个页面文件的解释或查询时间等,但他们应该了解应用程序的响应时间,因为这是大家正在寻找改善。
但是,如果testing成本超过内存本身(制定testing计划,设置服务器产生负载等),也许你应该要求他们相信你的判断,或者做最好的testing。
检查是否需要内存升级通常很简单。 一些perfmon计数器会告诉你操作系统在页面文件中出现的次数,以及内存利用率,页面等等。另外,因为它是SQL Server,你也可以使用分析器来查看正在完成多less个磁盘读取对于某些查询。 如果内存利用率是<90%,那么SQL服务器configuration不是最佳的。 不要为此使用任务pipe理器,因为它的“空闲”内存列包含分配给预取的数量。
你需要能够说服他们(和你自己),在你testing之前/之后,甚至打扰他们之前,通过这些指标来评估这些东西。 之前/之后的testing通常只是备份你的原始certificate。 如果你的指标不build议你需要更多的内存,那么这可以节省你的脸蛋。
然而,对于查询之前/之后,我会采取一个常用的查询(不是太简单,真实的事情),把它扔进SQLpipe理工作室,打开执行计划(所以你可以确保它运行相同的计划时间,从而得到有效的结果),以及时间。
对于页面速率,磁盘队列等,也可能需要收集一些perfmon统计信息。
如果您继续进行升级,请记住,并非所有的RAM都是完美的。 即使ECC内存可能会产生缺陷,虽然严重的缺陷将是罕见的。 如果可能的话,在将其安装到服务器之前,使用类似Memtest86 +的内存对内存进行初始validation。 如果安装后可以运行相同的testing,则更好,但意味着停机时间更长。
如果您的“升级”导致服务器不稳定,您的客户将不会高兴。
性能监视器计数器都很好,但它们并不总是讲述整个故事。 我认为您还需要根据用户对应用性能感知的变化来衡量这一点。
你有没有在某些任务/场景(如果不是为什么?)定义这个应用程序可接受的性能的“SLA”。
要么你会看到应用程序响应性的“实质性”改善,导致性能投诉的可量化下降,或者应用程序在满足SLA要求方面做得更好,否则就不会。
有没有为系统“正确调整”服务? 难道是SQL进程使用了大量的内存,并且没有限制它可以使用的内容,这会影响到应用程序中基于SQL的部分以外的其他组件的性能?
你是否确定这不是磁盘或networking瓶颈?