Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >我可以采取哪些步骤来确定我的服务器是否没有为内存做好准备?

我可以采取哪些步骤来确定我的服务器是否没有为内存做好准备?
EN

Database Administration用户
提问于 2020-06-11 09:56:16
回答 1查看 3.7K关注 0票数 5

我的服务器正在运行server 2016。这个环境的工作量相当高,每天都有大量的写事务和数据读取。我有一种预感,服务器没有得到足够的内存,我想深入研究一下,看看是否如此。确定服务器上可用的内存量是否以及产生多少争用的最佳方法是什么?

我确实看过DMV sys.dm_os_wait_stats,当按waiting_tasks_count desc排序时,前两种等待类型是"MEMORY_ALLOCATION_EXT“和"RESERVED_MEMORY_ALLOCATION_EXT”,它们的大小比任何其他等待类型的任务计数都大。还有其他地方我也可以检查记忆压力或争用吗?

编辑:此服务器上所有数据库的总大小为3 TB,大多数事务的主数据库为2 TB,服务器上的RAM总量为32 GB。

编辑2:以下是一天中的延迟写入/第二个perfmon计数器结果:

EN

回答 1

Database Administration用户

回答已采纳

发布于 2020-06-11 10:30:13

下面是几个perfmon计数器,您可以使用它作为启动器。

内存奖励挂起--这是一个计数器,它告诉您是否有任何查询等待内存分配(内存分配)。这个应该是0。如果不止这些,你就有问题了。

页面预期寿命--这是页面在内存中停留的估计时间(以秒为单位)。越高越好,但是有一个公式可以计算出您的serer的最小值应该是什么。它曾经是300秒的最小值,但这是一个旧的计算,现在应该是每GB 100秒。我是在周六的SQL会议上从理查德·道格拉斯那里得到这个的,所以我要归功于他。他为SentryOne工作。小于此值的值告诉您分配的内存太少。还可以将此计数器与检查点页/秒结合使用。请注意,每个NUMA节点都有自己的PLE值(如果您在Server上有多个NUMA节点)。Server开始将资源划分到分配给8个核以上的(软) NUMA节点。

懒写/秒-当SQL Server遇到内存压力时,惰性写入程序会清除缓存中的旧页。经常超过20是一个问题(这也是从理查德道格拉斯那里得到的)。但是,将它与页面预期寿命结合使用。如果您看到较高的PLE以及延迟写入/秒的峰值,则会导致SQL从其缓存中删除页面并插入新页。请看下面的截图,看看我家实验室的一个例子。

我确信,这里的一些专家对记忆员了解得更多了,他们还在我的名单上更深入地研究,所以也许有人会为你提供一些额外的信息(我也非常感兴趣:-)。

编辑:如果你愿意的话,你也可以使用sys.dm_os_performance_counters动态查询来获取它们。

2020年6月24日编辑:

@J.D.关于你6月23日的评论,我也深入到记忆压力中,因为@Dominique的评论和本文:https://www.brentozar.com/archive/2020/06/page-life-expectancy-doesnt-mean-jack-and-you-should-stop-looking-at-it/。当我把这个放在邮箱里的时候,我笑了,也许他看到了这篇文章。-)这篇文章告诉我们不要再看它了。嗯,虽然布伦特肯定比我有更多的经验,但我认为我不能完全同意他的说法,不去看它。我在他的sp_BlitzFirst上下文中理解了他的观点,一个使用最多25%缓冲区缓存的查询,它是一个滞后指标等等,但是对于趋势分析和历史,我仍然会看到PLE。如果我想确定服务器是否随着时间的推移有内存压力,这就是我将使用的结合等待内存授予。另外,来自RedGate和Quest的监控工具仍然使用这种方法。现在@Dominique说要查看RESOURCE_SEMAPHORE等待,我同意这一点,但这很可能与挂起的内存授权(您可以很容易地在perfmon注册)的数量一致。如果您有一个常量的内存授权队列(它与FIFO队列一起工作),那么您确实有内存压力。

作为参考,这是这个宇宙中某个系统(32 GB mem,1TB数据库,尽管工作负载类型也非常重要)的Lazy。黄色是批请求p/s,10表示一个1000,所以你可以看到它绝对不是空闲的。

这里还有我的家庭实验室提供的关于内存授权与RESOUCE_SEMPAPHORE等待的快照(我还看到我突出显示了tempdb写的内容,这就是david所说的,太少mem,所以请将内容转移到tempdb):

现在,看看您的perfmon计数器,我认为您肯定会有内存问题。我的意思是,有些东西不断迫使Server从缓冲区缓存中删除页面。如果这是一次的话,好吧,但是似乎一直在忙着这样做.然而,我希望看到它们与PLE相比较。这可能是一个明确的迹象,有内存压力(随着时间的推移,我仍然这样认为)。其次,您还需要查看挂起的内存授权。我以前没这么说过,但回头看,我认为你想看看布伦特和多米尼克所说的等待数据。然而,随着时间的推移,这就有点困难了。等待状态是累积累积的,所以您需要先清除它们(我不喜欢),然后查看它们是否是RESOURCE_SEMAPHORE加起来的。

若要清除等待状态:https://learn.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-sqlperf-transact-sql?view=sql-server-ver15

您也可以使用sp_BlitzFirst来监视它,但这只是运行它的时间点的快照。sp_BlitzFirst (或我想不起来的sp_Blitz )有一个选项,可以定期将其记录在表中,因此您也可以查看它。或者只是以其他方式查询dm_os_wait_stats也是有效的。总的来说,我个人的偏好是收集数据来分析这个问题。我使用Stedman: databasehealth.com的数据库健康监视器来完成这个任务。我家里实验室的截图:

这样,您可以更好地监视等待状态,尽管这将花费少量的资源。

如果您有Server 2017或更高版本(我们在env.中还没有这一点),那么您也可以使用Query。截至Server 2017,Query还记录等待状态(这是一个可配置的选项)。不过,请小心,我已经阅读了Query将非常繁忙的服务器拖垮的故事(您可以使用wait stats :-P来监视这一点)。当然,在实现功能之前,您应该始终进行测试。我们确实使用了它,并且工作得很好,但是我们有2016年,所以我们确实错过了等待统计选项:-( )

顺便提一下,我的策略是收集信息(如果可能的话,请等待统计),如果您认为内存压力很大,可以升级RAM (如果VM非常容易的话),然后收集性能指标并检查它们是否有改进。有点没有头脑,但后者往往被遗忘或做得不好。

票数 9
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/268975

复制
相关文章
AngularJS HTML DOM
ng-disabled 指令直接绑定应用程序数据到 HTML 的 disabled 属性。
陈不成i
2021/07/23
8160
AngularJS系列(三)——过滤器(filder)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
逝兮诚
2019/10/30
4940
[angularjs] angularjs系列笔记(四)过滤器
过滤器可以使用一个管道字符(|)添加到表达式和指令中,这不就是模板函数吗 <body> <div ng-app="Home"> <div ng-controller="Index"> 格式化字符串为小写 {{myName()|lowercase}}。 格式化字符串为大写 {{myName()|uppercase}}。 格式化数字为货币格式 {{price|currency}}。
唯一Chat
2019/09/10
4830
【AngularJS】—— 9 自定义过滤器
AngularJS另一个特点就是提供了过滤器,可以通过操作UNIX下管道的方式,操作数据结果。   通过使用管道,可以便于双向的数据绑定中视图的展现。   过滤器在处理过程中,将数据变成新的格式,而且可以使用管道这种链式风格,还能接受附加的参数。   实现方式   下面看一下如何定义声明一个过滤器,首先依然是要创建我们自己的模块myAppModule var myAppModule = angular.module("myApp",[]);   接下来在模块的基础上,创建过滤器: myAppModul
用户1154259
2018/01/17
6460
【AngularJS】—— 9 自定义过滤器
AngularJS系列(七)——HTML DOM操作
ng-disabled 指令绑定应用程序数据"mySwitch" 到 HTML 的 disabled 属性。
逝兮诚
2019/10/30
5450
[angularjs] angularjs系列笔记(七)HTML DOM
AngularJs为HTML DOM元素的属性提供了绑定数据的指令 ng-disabled指令 ng-disabled指令直接绑定数据到HTML元素的disabled属性 ng-show指令 ng-show指令隐藏和显示一个HTML元素 ng-hide指令与ng-show相反 <div ng-app="Home"> <div ng-controller="ngDisabledTest"> 测试ng-disabled指令 <button ng-disa
唯一Chat
2019/09/10
3540
angularjs学习第二天笔记---过滤器
 您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点评与赐教。谢谢!
小小许
2018/09/20
1.3K0
谷歌发布 AngularJS 1.0,允许扩展HTML语法
谷歌2012年06月15日发布了一个全新的Web模板——AngularJS 1.0。 谷歌称, AngularJS可以让你扩展HTML的语法,以便清晰、简洁地表示应用程序中的组件,并允许将标准的HTM
张善友
2018/01/29
1.4K0
谷歌发布 AngularJS 1.0,允许扩展HTML语法
angularjs学习第二天笔记---过滤器
 您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点评与赐教。谢谢!
小小许
2018/08/30
1.3K0
angularjs学习第二天笔记---过滤器
前端MVC学习总结(二)——AngularJS验证、过滤器、指令
一、验证 angularJS中提供了许多的验证指令,可以轻松的实现验证,只需要在表单元素上添加相应的ng属性,常见的如下所示: <input Type="text" ng-model="" [name
张果
2018/01/04
15.4K0
前端MVC学习总结(二)——AngularJS验证、过滤器、指令
【AngularJS】 # AngularJS入门
ng-app 指令定义一个 AngularJS 应用程序。 若不声明,将直接显示表达式。
全栈程序员站长
2022/09/15
23.2K0
【AngularJS】 # AngularJS入门
angularjs学习第三天笔记(过滤器第二篇---filter过滤器及其自定义过滤器)
您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点评与赐教。谢谢!
小小许
2018/09/20
1.1K0
AngularJS处理和转换视图中数据的重要工具:过滤器
AngularJS 是一个功能强大的 JavaScript 前端框架,它提供了丰富的内置过滤器,用于处理和转换视图中的数据。过滤器是 AngularJS 的核心特性之一,它可以帮助我们在模板中对数据进行排序、过滤、格式化等操作,从而更好地满足用户需求。本文将详细介绍 AngularJS 过滤器的概念、特性和用法,并提供一些示例来帮助读者更好地理解和应用。
网络技术联盟站
2023/07/05
2000
angularjs学习第三天笔记(过滤器第二篇---filter过滤器及其自定义过滤器)
您好,我是一名后端开发工程师,由于工作需要,现在系统的从0开始学习前端js框架之angular,每天把学习的一些心得分享出来,如果有什么说的不对的地方,请多多指正,多多包涵我这个前端菜鸟,欢迎大家的点评与赐教。谢谢!
小小许
2018/08/30
1.3K0
angularjs学习第三天笔记(过滤器第二篇---filter过滤器及其自定义过滤器)
【AngularJS】—— 1 初识AngularJs
怀着激动与忐忑的心情,开始了学习AngularJS的旅程,很久之前就听说了这个前端框架,但是由于自己一直没有从事相关的工作,因此也没有进行学习。这次正好学习AngularJS,直接复习一下前端的知识。目前这里还是弱点,慢慢深入的学习。   AngularJS是Google的优秀的前端框架,目前已经应用于多个产品。   通过w3cschool.cc的学习,简单的了解了下它的使用方法,但是对于原理还没有理解。   AngularJs相对于其他的框架来说,有一下的特性:   1 MVVM   2 模块化
用户1154259
2018/01/17
2.8K0
AngularJS入门心得3——HTML的左右手指令
  在《AngularJS入门心得1——directive和controller如何通信》我们提到“AngularJS是为了克服HTML在构建应用上的不足而设计的。HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了。这里AngularJS就应运而生,弥补了HTML的天然缺陷,用于构件Web应用等。”   那么AngularJS如何弥补HTML的缺陷,指令可能是最好的回答。 指令是什么??? 指令就是一些附加在HTML元素上的自定义标记(可以是属性A、元素E、css类
JackieZheng
2018/01/16
3.2K0
AngularJS入门心得3——HTML的左右手指令
AngularJS 的 API:模块 API、指令 API、服务 API、过滤器 API、路由 API
AngularJS 是一款流行的前端 JavaScript 框架,提供了丰富的 API 接口,用于实现前端应用的各种功能。本文将详细介绍 AngularJS 的 API,包括模块 API、指令 API、服务 API、过滤器 API、路由 API 等内容,帮助开发者充分了解和熟练运用 AngularJS 的各项功能。
网络技术联盟站
2023/07/05
2970
AngularJS简介
AngularJS是一个JavaScript矿建,他是一个JavaSscript编写的库。可以通过<script>标签添加到HTML页面。
全栈程序员站长
2022/09/16
5K0
【AngularJS】—— 2 初识AngularJs(续)
前一篇了解了AngularJS的一些简单的使用,这里继续跟着w3c学习一下剩下的内容。   本篇根据w3cschool.cc继续学习AngularJS剩余的内容,包括:   1 事件   2 模块   3 表单   4 数据验证   5 bootstrap CSS风格   6 include包含其他页面   7 应用程序   8 参考手册   首先看一下html的事件   关于html的事件,文中给出了三个例子,点击、隐藏、显示。使用方法基本相同:   先看一下点击的例子,点击按钮后,会触发ng-clic
用户1154259
2018/01/17
2.2K0
AngularJS
scope:单个controller的作用域。可以直接在某controller下的页面引用scope下的变量 rootScope:多个controller作用域的桥梁。可以直接在全局页面引用rootScope下的变量
城市中的游牧民族
2019/02/21
1.4K0

相似问题

AngularJS过滤器返回的HTML错误

23

在HTML中使用AngularJS过滤器

42

AngularJS,附件html的内联过滤器

13

如何创建输出HTML的angularjs过滤器

31

在html属性中使用angularjs过滤器

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文