公司的内部网站,以前都没有这种情况出现,现在sqlservr这个进程占用CPU比较高,导致网站所有模块都比较慢,尤其是站内信部分更是慢。
想问下是什么原因造成的。解决方法。。
想问下是什么原因造成的。解决方法。。
解决方案 »
- MSSQL2005做链接服务器连接informix,select没有问题,insert报错……
- 一道sql题,请求帮助
- excel 里有多个Sheet导入到数据库
- 用触发器实现还原
- 数据显示
- 高分求助SQL Server 2008数据同步问题
- 如何进行记录合并,高手请进
- !!!!!!!----各位这个SQL语句怎么写呀?另请 Haiwer(海阔天空) 回答,谢谢!!---------------
- 在SQL 7.0 中 :create table #temp select * from works 错在那里?
- 如何取得固定筆數範圍的RecordSet?(急,分數不夠,想要多少你提!)
- 查最大值日变变成了最小值
- 求教这个存储过程的问题解决
select
top 50
SUM(qs.total_worker_time) as total_cpu_time,
SUM(qs.execution_count) as total_execution_count,
COUNT(*) as number_of_statements,
qs.plan_handle
from sys.dm_exec_query_stats qs
group by qs.plan_handle
order by SUM(qs.total_worker_time) desc如果是2000的,就用profiler跟踪下吧。
是sql server 2005。
http://topic.csdn.net/u/20080314/10/513ff771-fafe-4e78-8978-fae0f2c575b8.html?950019447在 Windows 2000 或 Windows Server 2003 下运行的进程最多可以访问 2 GB 的内存地址空间(假设未使用 /3GB 参数),其中一些内存是物理内存,另一些是虚拟内存。运行的程序越多(因而进程也越多),占用的内存地址空间也就越接近 2 GB 这一最大值。
当出现这种情况时,分页进程将显著增加并且会对性能产生负面影响。Windows 2000 和 Windows Server 2003 内存管理器使用 PAE 向程序提供更多的物理内存。这会降低对交换页面文件内存的需要,从而提高了性能。程序本身并不知道实际的内存大小。所有的内存管理和 PAE 内存分配都由内存管理器处理,与运行的程序无关。不过这是32位windows特性,如果改用64位windows的话,由于可管理内存增大,系统自动内存要求支持大于2gb应用程序。
解决方案
1、修改启动文件,添加/pae和/3gb开关,步骤为:
右击我的电脑 --> 属性 --> 高级 --> 启动和恢复 --> 设置 --> 手工编辑启动文件,加入开关,
以下是一个 Boot.ini 文件的示例,其中已添加了 PAE 和3gb开关:
[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(2)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(2)\WINDOWS="Windows Server 2003, Enterprise" /fastdetect /PAE /3gb
曾经遇到一个低性能的查询产生了严重的Block,导致整台服务器速度极慢,CPU使用率100%的情况。
如果有block,再进一步去检查该进程相关对象的锁情况,可能存在冲突。
2.不合理的存储过程重编译
3.存在一定的并发;
4.游标问题你一个个去排除吧。。
最简单的办法: select * from sys.sysprocesses where blocked<>0
看一下阻塞的Spid,然后执行 DBCC inputbuffer(spid)命令,可以看到这些进程在做什么事情。
然后分析一下句子,在锁分类里查看这个进程对所用到的表对象持有什么锁。
这句话是不sp2补丁吧,没有sp3的。需要更新成sp3吗,谁有给个地址。谢谢
做日志记录,分析发生进程占用CPU比较高的时段,是否是一直高占用率,之前没有,最近才有,可能是病毒引起。启动Profiler,建Trace来追踪下执行的SQL表达式,看哪一块Duration值高,或哪里发生死锁。
把占用CPU时间前五位的查询抓出来,自己分析分析了。
没办法一步到位的,只能一步步来。
1. Create WaitStats table for storing waiting information=================
use class100
go
If object_id('dbo.WaitStats') is not null
drop table dbo.WaitStats
goselect getdate() as dt,
wait_type,waiting_tasks_count,wait_time_ms,Max_wait_time_ms, signal_wait_time_ms
into dbo.WaitStats
from. sys.dm_os_wait_stats
where 1=2Alter table dbo.WaitStats
add constraint PK_WaitStats primary key(dt,wait_type);
create index idx_type_dt on dbo.WaitStats(Wait_type,dt);
=====================2. Create a scheduled(5 minutes) job to load the waiting information from DMV TO WaitStats table.======================
insert into dbo.WaitStats
select getdate(), wait_type, waiting_tasks_count,
wait_time_ms, max_wait_time_ms, signal_wait_time_ms
from sys.dm_os_wait_stats;
======================3. 过一个小时把class100备份下来,发送给我帮你看看:
.谢谢(防止邮件尺寸太大被block)
出现这个了
消息 102,级别 15,状态 1,第 1 行
'WaitStats' 附近有语法错误。
消息 911,级别 16,状态 1,第 3 行
在 sysdatabases 中找不到数据库 'class100' 所对应的条目。没有找到具有该名称的条目。请确保正确地输入了该名称。(0 行受影响)
怎么解决
你还没有create class 100数据库啊,create 了后,在运行。
FROM sys.dm_exec_cached_plans
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
WHERE usecounts > 1
ORDER BY usecounts DESC;
GO找到plan_handle后,查询select *session_id
from sys.dm_exec_requests
where plan_handle=目标值