当前位置: 首页 > 编程日记 > 正文

SQL Server 性能基线和监控

就讲讲监控那些值,基线抓的是那些值。如何做告警

环境:windows 2008r2,sql server 2008r2 sp1

性能基线:

cpu:

\Processor(_Total)\% Processor Time
    \Processor(_Total)\% Privileged Time

\SQLServer:SQL Statistics\Batch Requests/sec
    \SQLServer:SQL Statistics\SQL Compilations/sec
    \SQLServer:SQL Statistics\SQL Re-Compilations/sec
    \System\Processor Queue Length
    \System\Context Switches/sec

Memory:

\Memory\Available Bytes
    \Memory\Pages/sec
    \Memory\Page Faults/sec
    \Memory\Pages Input/sec
    \Memory\Pages Output/sec
    \Process(sqlservr)\Private Bytes
    \SQLServer:Buffer Manager\Buffer cache hit ratio
    \SQLServer:Buffer Manager\Page life expectancy
    \SQLServer:Buffer Manager\Lazy writes/sec
    \SQLServer:Memory Manager\Memory Grants Pending
    \SQLServer:Memory Manager\Target Server Memory (KB)
    \SQLServer:Memory Manager\Total Server Memory (KB)

Disk:

\PhysicalDisk(_Total)\% Disk Time
    \PhysicalDisk(_Total)\Current Disk Queue Length
    \PhysicalDisk(_Total)\Avg. Disk Queue Length
    \PhysicalDisk(_Total)\Disk Transfers/sec
    \PhysicalDisk(_Total)\Disk Bytes/sec
    \PhysicalDisk(_Total)\Avg. Disk sec/Read
    \PhysicalDisk(_Total)\Avg. Disk sec/Write

SQL Server:

\SQLServer:Access Methods\FreeSpace Scans/sec
    \SQLServer:Access Methods\Full Scans/sec
    \SQLServer:Access Methods\Table Lock Escalations/sec
    \SQLServer:Access Methods\Worktables Created/sec
    \SQLServer:General Statistics\Processes blocked
    \SQLServer:General Statistics\User Connections
    \SQLServer:Latches\Total Latch Wait Time (ms)
    \SQLServer:Locks(_Total)\Lock Timeouts (timeout > 0)/sec
    \SQLServer:Locks(_Total)\Lock Wait Time (ms)
    \SQLServer:Locks(_Total)\Number of Deadlocks/sec
    \SQLServer:SQL Statistics\Batch Requests/sec
    \SQLServer:SQL Statistics\SQL Re-Compilations/sec

以上是性能基线监控的信息,当然性能警告也是监控这些信息,其中的阀值是根据基线抓取后体现。

关于性能警告我是使用powershell 写了一个脚本,运行在SQL Agent 中。如果出现警告,就通过dbmail 发送邮件

关于powershell 脚本和一些配置信息看如下:

$server = "(local)"
$uid = "sa"
$db="master"
$pwd="pwd"
$mailprfname = "sina"
$recipients = "xxxxx@qq.com"
$subject = "Proformance Alter"
$computernamexml = "f:\computername.xml"
$alter_cpuxml = "f:\alter_cpu.xml"
function GetServerName($xmlpath)
{$xml = [xml] (Get-Content $xmlpath)$return = New-Object Collections.Generic.List[string]for($i = 0;$i -lt $xml.computernames.ChildNodes.Count;$i++){if ( $xml.computernames.ChildNodes.Count -eq 1){$cp = [string]$xml.computernames.computername}else{$cp = [string]$xml.computernames.computername[$i]}$return.Add($cp.Trim())}$return
}function GetAlterCounter($xmlpath)
{$xml = [xml] (Get-Content $xmlpath)$return = New-Object Collections.Generic.List[string]$list = $xml.counters.Counter$list
}function CreateAlter($message)
{$SqlConnection = New-Object System.Data.SqlClient.SqlConnection $CnnString ="Server = $server; Database = $db;User Id = $uid; Password = $pwd" $SqlConnection.ConnectionString = $CnnString $CC = $SqlConnection.CreateCommand(); if (-not ($SqlConnection.State -like "Open")) { $SqlConnection.Open() } $cc.CommandText=" EXEC msdb..sp_send_dbmail @profile_name  = '$mailprfname',@recipients = '$recipients',@body = '$message',@subject = '$subject'
" $cc.ExecuteNonQuery()|out-null $SqlConnection.Close();
}$names = GetServerName($computernamexml)
$pfcounters = GetAlterCounter($alter_cpuxml)
foreach($cp in $names)
{$p = New-Object Collections.Generic.List[string]$report = ""foreach ($pfc in $pfcounters){$b = ""$counter ="\\"+$cp+$pfc.get_InnerText().Trim()$p.Add($counter)}$count = Get-Counter $pfor ($i = 0; $i -lt $count.CounterSamples.Count; $i++){$v = $count.CounterSamples.Get($i).CookedValue$pfc = $pfcounters[$i]#$pfc.get_InnerText()$b = ""$lg = ""if($pfc.operator -eq "lt"){if ($v -ge [double]$pfc.alter){$b = "alter"$lg = "Greater Than"}}elseif ($pfc.operator -eq "gt"){if( $v -le [double]$pfc.alter){$b = "alter"$lg = "Less Than"}}if($b -eq "alter"){$path = "\\"+$cp+$pfc.get_InnerText()$item = "{0}:{1};{2} Threshold:{3}" -f $path,$v.ToString(),$lg,$pfc.alter.Trim()$report += $item + "`n"}}if($report -ne ""){#生产警告 参数 计数器,阀值,当前值CreateAlter $report}
}

其中涉及到2个配置文件:computernamexml,alter_cpuxml分别如下:

<computernames><computername>fanr-pc</computername>
</computernames>
<Counters><Counter alter = "10" operator = "gt" >\Processor(_Total)\% Processor Time</Counter><Counter alter = "10" operator = "gt" >\Processor(_Total)\% Privileged Time</Counter><Counter alter = "10" operator = "gt" >\SQLServer:SQL Statistics\Batch Requests/sec</Counter><Counter alter = "10" operator = "gt" >\SQLServer:SQL Statistics\SQL Compilations/sec</Counter><Counter alter = "10" operator = "gt" >\SQLServer:SQL Statistics\SQL Re-Compilations/sec</Counter><Counter alter = "10" operator=  "lt" >\System\Processor Queue Length</Counter><Counter alter = "10" operator=  "lt" >\System\Context Switches/sec</Counter>
</Counters>

其中 alter 就是阀值,如第一条,如果 阀值 > 性能计数器值,就会发出警告。

相关文章:

ASP.NET特写

作者&#xff1a; 仙人掌工作室 创建动态Web页面的新技术已经以CLR服务为基础全部重新改写。到目前为止&#xff0c;所有.NET提供的语言都可用于编写ASP.NET页面&#xff0c;但页面的扩展名和ASP 3.0的不同。具体地说&#xff0c;简单Web页面以“.aspx”为扩展名&#xff0c…

Google出品,EfficientNet在目标检测达到最新SOTA | CVPR 2020

作者 | tanmingxing&#xff0c;rpang&#xff0c;qvl 来源 | 晓飞的算法工程笔记&#xff08;&#xff09; 介绍 目前目标检测领域&#xff0c;高精度的模型通常需要很大的参数量和计算量&#xff0c;而轻量级的网络则一般都会牺牲精度。因此&#xff0c;论文希望建立一个可伸…

存储过程和存储函数初步

2019独角兽企业重金招聘Python工程师标准>>> 存储过程和函数初步 简单的来说&#xff0c;存储过程就是一条或者多条 SQL 语句的集合&#xff0c;可视为批处理文件&#xff0c;但是其作用不仅限于批处理。 ###存储程序可以分为存储过程和函数。 MySQL 中创建存储过程…

asp.net 入门的五个步骤

作者&#xff1a; rob howard 步骤 1&#xff1a;下载和安装 .net sdk asp.net 是作为 .net sdk 的一部分提供的&#xff0c;它是创建、生成和测试基于 .net framework 的应用程序所需要的所有技术的集合。要下载和安装 .net sdk&#xff0c;请前往 msdn online .net 开发人…

我帮公司财务写了个“群发工资条”的Python脚本

作者 | 黄伟呢来源 | 数据分析与统计学之美介绍这是一个很好的Python自动化的案例。对于小公司&#xff0c;采用手动方式一个个发送邮件还是可以的。如果一个上百号&#xff0c;上千号&#xff0c;或者更大规模的公司&#xff0c;我们再一个个发送工资条邮件&#xff0c;就太浪…

[转] vim的复制粘贴小结

转载自: http://blogread.cn/it/article.php?id304 用vim这么久了&#xff0c;始终也不知道怎么在vim中使用系统粘贴板&#xff0c;通常要在网上复制一段代码都是先gedit打开文件&#xff0c;中键粘贴后关闭&#xff0c;然后再用vim打开编辑&#xff0c;真的不爽&#xff1b;上…

CCNA基础 IP地址子网划分

例&#xff1a;1.2.3.4/28 解析0&#xff1a;https://ws2.sinaimg.cn/large/006aKfj6jw1fa09e02m53j30u01hc7av.jpg 解析1&#xff1a;子网数量&#xff1a;2^n-x ( N表示 "/" 后面的数字&#xff1b;X表示8或16或24 ) &#xff08;子网数量需要减去8或16视情况决…

一位IT從業人員的心路歷程

一位IT從業人員的心路歷程作者&#xff1a;章立民「Statgraphics統計繪圖入門詳論」是我的第一本著作&#xff0c;時值1990年9月&#xff0c;當時我還是一位大三升大四的學生。屈指算算&#xff0c;14年來&#xff0c;我已經撰寫了60本以上的書籍(簡體版未計算在內)&#xff0c…

面了大厂的 Python 岗后,炸了!

听说 Python 很难学&#xff1f;难在哪里&#xff1f;听说学完不知道做什么&#xff0c;为什么&#xff1f;结合我最近这些年的 Python 学习、开发经验&#xff0c;发现 90% 的人在初学 Python 时都会遇到下面这些问题——1. 没经验根本不知道从何学起&#xff0c;而且应用方向…

{} 与 function() { } , 选用空对象{}来存放keyValue

虽说js里面什么都能当对象&#xff0c;也能用填鸭式方法任意给对象添加属性&#xff0c;属性赋值.但是有些js内置的对象&#xff0c;类型属性也是没办法覆盖的。 贪多必失&#xff0c;写了一个用操作url 的js工具类&#xff0c;这个类上面有个属性叫queryString&#xff0c;我原…

java/android 设计模式学习笔记(1)--- 单例模式

前段时间公司一些同事在讨论单例模式&#xff08;我是最渣的一个&#xff0c;都插不上嘴 T__T &#xff09;&#xff0c;这个模式使用的频率很高&#xff0c;也可能是很多人最熟悉的设计模式&#xff0c;当然单例模式也算是最简单的设计模式之一吧&#xff0c;简单归简单&#…

实例解说.Net构架下的加密编程

yesky(张悦■yesky) http://www.yesky.com/SoftChannel/72342380484755456/20031225/1756613.shtml 很久以前就一直想写一个加密程序&#xff0c;但是一直感到太麻烦而没有动手&#xff0c;不过在前段时间学习.NET的过程中发现.NET的框架中封装了与加密有关的类。而且要在.NE…

人工智能新手入门学习路线!附学习资源合集

有段时间没跟大家分享编程资源福利了&#xff01;今天为大家整理了人工智能新手入门学习路线&#xff0c;同时附700分钟的学习资源合集&#xff0c;相信这套福利可以帮你顺利入行AI&#xff01;文末领取全部资料。一、AI基础好课学习资料整理&#xff08;约317分钟&#xff09;…

数据还原到指定时间点的处理示例

--创建测试数据库CREATE DATABASE DbGO--对数据库进行备份BACKUP DATABASE Db TO DISKc:\db.bak WITH FORMATGO--创建测试表CREATE TABLE Db.dbo.TB_test(ID int)--延时1秒钟,再进行后面的操作(这是由于SQL Server的时间精度最大为百分之三秒,不延时的话,可能会导致还原到时间点…

kvm cpu的亲和性绑定配置

1.CPU的绑定配置进程的处理器亲和性&#xff08;process affinity&#xff09;&#xff1a;指将进程绑定到特定的一个或多个cpu上去执行&#xff0c;而不允许将进程调度到其他cpu上。物理cpu&#xff1a;表示真实的cpu个数逻辑cpu&#xff1a;表示所有拥有一个完整真实cpu功能的…

李开复对话Yoshua Bengio:AI技术的下一个突破

7月23日&#xff0c;在SGInnovate主办的“深度科技&#xff08;Deep Tech&#xff09;造福人类”活动上&#xff0c;创新工场董事长兼CEO李开复与Element AI联合创始人Yoshua Bengio进行了一场对话&#xff0c;讨论了人工智能的未来发展。Yoshua Bengio是深度学习三大发明人之一…

单链表功能大全

单链表很全的例子&#xff0c;增加&#xff0c;删除&#xff0c;排序&#xff0c;都有了 #include <stdio.h>#include <stdlib.h>typedef struct node{int nDate;struct node *pstnext;}Node;//链表输出void output(Node *head){Node *p head->pstnext;while(N…

Access外键 级联更新、删除

工具栏-->"关系"。 打开主表和从表。 将主表的字段拖动到从表的对应字段。 &#xff08;两个字段要求类型相同。 如果主表是自动编号&#xff0c;那么从表用长整型.&#xff09; Access添加外键约束(1)"实施完整性约束"(2)"左联接"(3)"实…

20161124网络爬虫技术学习

参考书籍&#xff1a;《自己动手写网络爬虫》 网络爬虫的基本操作是抓取网页。 “打开”网页的过程其实就是浏览器作为一个浏览的“客户端”&#xff0c;向服务器端发送了一次请穷求&#xff0c;把服务器端的文件“抓”到本地&#xff0c;再进行解释&#xff0c;展现。更进一步…

关于何种情况下使用DataGrid、DataList或Repeater的一些讨论

作者&#xff1a;Scott Mitchell &#xff3b;概述&#xff3d; WEB开发自从有了基于脚本的WEB编程技术&#xff08;如ASP&#xff09;以来&#xff0c;经历了一个漫长的过程。通过使用微软的ASP.Net技术&#xff0c;传统的ASP中大量的、单调乏味的、重复性的编程工作成为了历史…

UDP客户端不用绑定吗IP和端口?

2019独角兽企业重金招聘Python工程师标准>>> 书上都是这么说的&#xff0c;UDP客户端不用绑定IP和端口&#xff0c;操作系统会给它自动分配端口。。。。 但是虽然没有显示绑定&#xff0c;但是操作系统却似乎做了些隐蔽的事情。 首先&#xff0c;在客户端&#xff0…

算法实现太难了?机器学习也需要开源软件

作者 | Soren Sonnenburg等译者 | 刘畅出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;导读&#xff1a;开源工具已经趋于成熟&#xff0c;这使其能构建大规模的自然场景下的系统。与此同时&#xff0c;机器学习领域为各种应用开发了大量强大的学习算法。但是&#x…

数据库备份定期删除程序的开发。

第一.最近客户的服务器数据库备份每天都在进行&#xff0c;随着数据量的不断的增加&#xff0c;备份也在不断的进行变大。 第二.于是一些问题就出现了客户的服务器的磁盘的空间有限&#xff0c;定期数据库备份文件太大而导致无法进行保存问题。 第三.从而导致了服务器宕机以及服…

Repeater控件的分页问题

作者&#xff1a;zhoubinmail.sdu.edu.cn以前做ASP的时间不算短&#xff0c;可是做ASP.NET我是个新手。前几天做项目&#xff0c;遇到一个问题&#xff0c;要求比较复杂的数据格式显示&#xff0c;用DataGrid非常难实现&#xff0c;后来改用了Repeater控件来实现。不过这样就带…

华为昇腾AI全栈知识深入解读,师资培训沙龙深圳场圆满落幕!

头图 | 视觉中国极度缺乏AI人才&#xff0c;已成为中国人工智能产业发展道路上的瓶颈。在国家政策的支持下&#xff0c;众高校初建AI专业者甚多&#xff0c;但高校教师应掌握哪些知识储备来传道授业&#xff0c;大家都是“摸着石头过河”。将高校AI人才培养教学大纲与厂商成熟落…

[转载] 信息系统项目管理师考试论文写作要点

来源&#xff1a;信管网 网址&#xff1a;http://www.cnitpm.com/pm/4323.html &#xff08;1&#xff09;在论文写作之前&#xff0c;先不要急着动笔&#xff0c;认真把题看清楚&#xff0c;选择自己熟悉的论文&#xff08;考试时&#xff0c;一般是二选一&#xff09;&#x…

POM.xml 标签详解

pom作为项目对象模型。通过xml表示maven项目&#xff0c;使用pom.xml来实现。主要描述了项目&#xff1a;包括配置文件&#xff1b;开发者需要遵循的规则&#xff0c;缺陷管理系统&#xff0c;组织和licenses&#xff0c;项目的url&#xff0c;项目的依赖性&#xff0c;以及其他…

DataRow的序列化问题

来源&#xff1a;CSDN 作者&#xff1a;kroll 在.net里&#xff0c;DataRow类型的对象是不支持序列化的&#xff0c;那么如果在一个需要序列化的对象中含有DataRow类型的字段该怎么办呢&#xff1f;呵呵&#xff0c;幸好Datatable是支持序列化的。因此&#xff0c;我们可以自定…

mass Framework event模块 v4

event.js // // 事件模块&#xff08;包括伪事件对象&#xff0c;事件绑定与事件代理&#xff09; // $.define("event",document.dispatchEvent ? "node" : "node,event_fix",function(){// $.log("已加载target模块")var rhoverH…

美国 AI 博士:什么都不会怎么学 Python?

我见过市面上很多的 Python 讲解教程和书籍&#xff0c;他们大都这样讲 Python 的&#xff1a;先从 Python 的发展历史开始&#xff0c;介绍 Python 的基本语法规则&#xff0c;Python 的 list, dict, tuple 等数据结构&#xff0c;然后再介绍字符串处理和正则表达式&#xff0…