D.C*_*.C. 5 sql-server-2008 monitoring sql-server sql-server-2014
我必须处理以下情况:
目前我们有
正在使用。所有服务器都是在VMWare 中运行的虚拟服务器。
我们想要设置一个新的集群(SQL Server 2014 Enterprise)。第一步,将迁移 2008 Enterprise 集群中的 1 个实例和 2104 Standard 集群中的 1 个实例。
于是,老板问了我两个问题:
我的回答是:“这取决于......”现在我必须通过监控接下来的几周来提供确凿的事实。伟大的!(小心讽刺)
我对第一个问题的处理方法:
我计划使用 perfmon.exe 进行监控
问题是,这些数据从哪里获取呢?从节点?来自 SQL Server?
在第一种情况下,它应该很简单:第一个实例 -为了简单起见vsql2008ent-1\instanceX - 当前正在节点上运行,我们将其命名为节点sql2008NodeA。正常情况下,该节点上不应运行任何其他实例或服务器。所以我从哪里获取数据并不重要,不是吗?如果发生灾难,其他实例也将在此节点上运行。但我们希望有一个正常运行的基线。
第二个实例 - vsql2014stan-1\instanceY - 与其他 2 个实例共享其节点 - sql2014NodeA。在这种情况下,我永远无法确定实例真正需要多少核心才能平稳运行,对吧?这样我就可以监控实例了。但结果意味着什么呢?它仅显示该实例实际使用的CPU资源。但如果有可用的内核,是否会使用更多内核?那么上述问题的答案是什么呢?
内存是另一个问题。由于过去发生过几次灾难,当所有实例都落在同一节点上时,我为每个实例设置了最大服务器内存的上限。此限制取决于节点的可用内存(当前分别为 100GB 或 120GB)。那么如何监控呢?如果所有内存都用完,一切似乎都清楚了:内存不足。如果一切都变慢:内存不足。但我真正需要多少内存?
我尝试总结一下我的问题:
非常感谢您的帮助!
此致!
小智 0
是否/如何直接测量 CPU 核心使用率等问题超出了我的理解范围,但我会考虑尝试以下方法:
在您通常最繁忙的时期,运行添加了数据库名称的标准探查器跟踪。按数据库合计 SQL:BatchCompleted 和 RPC:Completed 事件的 CPU 列,您将大致了解每个数据库消耗了多少 CPU 资源(可能分布在多个核心上)。(也许还可以汇总其他事件的 CPU 列,以查看是否遗漏了任何重大内容。并将跟踪“保存为跟踪表”以供分析。)
具体如何将其转换为您需要的内核数,我可以'不说。但是,如果您还在分析器运行期间测量总系统 CPU 使用率,您也许能够根据特定数据库占总 CPU 使用率进行估计。
注意:如果您的服务器每秒处理的批处理请求少于几百个(请参阅 SSMS 活动监视器),那么即使跨网络的标准探查器跟踪也几乎肯定不会影响性能。如果您改为编写服务器端跟踪脚本,那么每秒可以处理更多请求,而不会减慢任何速度,但我对您的环境不做出任何承诺。
对于 RAM,我想知道http://www.sqlshack.com/sql-server-memory-performance-metrics-part-4-buffer-cache-hit-ratio-page-life-expectancy/是否可以帮助您确定您的实例需要更少/更多。我不认为有任何方法可以通过数据库来做到这一点。