SqlServer 批处理(Batch Requests/sec)过高追踪处理

近一段时间观察,监控发现一数据库的 每秒批处理请求数(Batch Requests/sec)经常升高持续较长时间,比平时高出几百,如下图:

由于一直比较高,以为是正常现象,没有注意。最近我们老大要求查看原因,所以跟踪查看,确实是数据库的非正常请求引起!

先了解 批处理(Batch Requestsc), 批处理简单理解为同时执行的一批SQL处理语句,一个批处理中可能有多个DML、多个存储过程等等。如在SSMS操作,每个‘GO‘执行前都属于一个批处理。

开始处理,用最笨的方法,打开SQL Server profiler  监控 SQL:BatchCompleted (sql批处理完成记录),但发现不是很多,每秒300左右,看起来正常,所以用 SQL Server profiler 不可行。

既然是批处理过多,批处理跟事务相关,可以打开性能监视器监控以下两个计数器:

Batch Requests/sec

Tranactions/sec(_Total)

发现 Tranactions/sec(_Total) 与 Batch Requests/sec 几乎是一致的,在继续查看Tranactions/sec ,把每个数据库都详细监控,确定只有 Tranactions/sec(master)  是最大的。与 master 连接相关的,如果不是系统的作业引起,可能就是连接引起,连接又有可能是内部的报表连接引起。排除除了SqlServer作业,再监控以下计数器:

Connection Reset/sec

Logins/sec

Logout/sec

只有 Connection Reset/sec 是最频繁的,Logins/sec 和 Logout/sec 平均都在3左右。Connection Reset/sec 就是连接池连接过来的。

关于 Connection Reset/sec ,可以参考 宋大侠的 Ado.net的连接池

  "The sp_reset_connection stored procedure is used by SQL
Server to support remote stored procedure calls in a transaction. This stored
procedure also causes Audit Login and Audit Logout events to fire when a
connection is reused from a connection pool."

此时可以用 SQL Server profiler  监控以下事件:

Audit Login

Audit Logout

这时监控出来的数据就比较多了!~这个用户 cdwbcb 不断从连接池地连接和断开!非常频繁,可以确定是该用户引起的!

接下来就好办了,打开SSMS连接到该数据库,执行以下语句。

select p.*,s.text
from master.dbo.sysprocesses p
cross apply sys.dm_exec_sql_text(p.sql_handle) s
where nt_username='cdwbcb'

找到相关数据:

数据库中保持了该用户的6个连接会话。奇怪的是,这些session的事务已经关闭(open_tran=0),处于空闲状态(status=sleeping),但是仍有命令等待执行(cmd=AWAITING COMMAND)!如果 open_tran=1 还可以理解,这个就无法解释了,还不清楚这个连接是个什么样的状态。

暂时的解决方法:kill 该账户的几个会话。执行后很快降下来!

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-11 01:59:52

SqlServer 批处理(Batch Requests/sec)过高追踪处理的相关文章

批处理(Batch)---批处理脚本。

批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中.批处理文件的扩展名为bat .目前比较常见的批处理包含两类:DOS批处理和PS批处理.PS批处理是基于强大的图片编辑软件Photoshop的,用来批量处理图片的脚本:而DOS批处理则是基于DOS命令的,用来自动地批量地执行DOS命令以实现特定操作的脚本.更复杂的情况,需要使用if.for.goto等命令控制程式的运行过程,如同C.Basic等高

sqlserver 索引优化 CPU占用过高 执行分析 服务器检查

原文:sqlserver 索引优化 CPU占用过高 执行分析 服务器检查 1. 管理公司一台服务器,上面放的东西挺多的.有一天有个哥们告诉我现在程序卡的厉害.我给他说,是时候读点优化的书了.别一天到晚没个正形,现在写的程序卡的跑不动.他说我本地 是好好的,跑的很快.我说别扯那么多没用的,服务器不比你的本子强得多.待洒家上去看看.不看不知道一看吓一跳,CPU占用在95上下.开个程序是不卡,可整点有些时间是卡的一匹.这就令人很难受了. 本来服务器上也没有什么,就一个网站和几个数据库.那一个个分析吧,

sqlserver定位消耗资源比較高的sql

sqlserver查看消耗资源的sql ,详细例如以下: 能够使用SQL 高速定位数据库里CPU,IO 消耗比較高的SQL: 1. 定位消耗cpu,io 最高的进程信息 selectspid,dbid,cpu,physical_io,login_time,last_batch,status, hostname,program_name,hostprocess,cmd,nt_usernamefrom sysprocesses order by cpu,physical_io desc; 2. 定位

sqlserver 索引优化 CPU占用过高 执行分析 服务器检查[转]

SELECT TOP 10 [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0) , avg_user_impact , TableName = statement , [EqualityUsage] = equality_columns , [InequalityUsage] = inequality_columns , [Include Cloumns] = incl

SQLSERVER 性能优化之Perfmon指标

Perfmon是Windows系统性能监视程序.用于监视CPU使用率.内存使用率.硬盘读写速度.网络速度等. Processor/%Privileged Time阀值:如果数值持续大于75%就表示存在瓶颈.含义:这个计数器表示一个线程在特权模式下所使用的时间比例.当你的程序调用操作系统的方法(比如文件操作,网络I/O或者分配内存),这些操作系统的方法是在特权模式下运行的. Processor/ %UserTime              与%Privileged Time计数器正好相反,指的是

SQL Server内存

背景 最近一个客户找到我说是所有的SQL Server 服务器的内存都被用光了,然后截图给我看了一台服务器的任务管理器.如图 这里要说明一下任务管理器不会完整的告诉真的内存或者CPU的使用情况,也就是说这里只能得到非精确的信息,有可能就是一个假警报. 为了让我的客户放心,我检查了服务器并且查看了很多性能指标.我所看到的就是CPU和硬盘使用都是很低的只有内存是高的,这恰恰是我们期望的SQLServer 服务器的状态.SQL Server会尽可能的使用内存,通过缓存尽可能多的磁盘来改善性能.当然如果

SQLServer学习-- SQLServer

SQL Server 是Microsoft 公司推出的关系型数据库管理系统.具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用. Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理.Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的

SqlServer性能瓶颈分析

一.内存瓶颈分析--SQLServer:Buffer Manager SELECT TOP 312 * FROM  sys.dm_os_performance_counterswhere object_name ='SQLServer:Buffer Manager' order by counter_name 1.Buffer cache hit ratio  平均值>=90% 缓冲区是创建数据页面的缓冲页面池,这一般是SQL server内存池中最大的部分.这个计数器应该尽可能高. 低值表示只

sqlserver服务器常用的性能计数器

sqlserver服务器常用的性能计数器,在此标记. 性能对象 计数器 说明 Processor %Processor Time %Privileged Time 建议值:持续低于80 建议值:持续低于10 System Processor Queue Length 等候处理器的线程队列长度 建议值:此值/CPU数  <  2       Memory Available Mbytes 给操作系统预留20%的物理内存   Pages/sec Page faults/sec 建议值:低于20(Ha