机房有台windows server2003的服务器上装了sql server200。服务器配置为4CPU,8G.
同网段内的客户端访问数据库服务很正常。
但是不同网段的客户端访问数据库服务器,能连接上数据库服务,直接ping 数据库服务所在的服务器。延时小于1毫秒。
但是在服务器上通过任务管理器查看到sqlserver.exe这个进程的CPU占用率为50%。请问大家遇到过这样的问题吗?
------解决方案--------------------
cpu高的问题 应该是内部的语句导致吧 查出占用CPU比较多几个sql语句 分析下
------解决方案--------------------
一般是由SQL语句引起的,
用SQL Profiler工具跟踪一下.
------解决方案--------------------
平均<80%的使用状况,应该都可以接受。
lz,业务高峰期,cpu 多少?
------解决方案--------------------
LZ先用以下SQL语句查询是否有比较占CPU的查询
- SQL code
SELECT substring(text,qs.statement_start_offset/2,(CASE WHEN qs.statement_end_offset = -1 THEN len(convert(nvarchar(max), text)) * 2 ELSE qs.statement_end_offset END - qs.statement_start_offset)/2) ,qs.plan_generation_num as recompiles,qs.execution_count as execution_count,qs.total_elapsed_time - qs.total_worker_time as total_wait_time,qs.total_worker_time as cpu_time,qs.total_logical_reads as reads,qs.total_logical_writes as writes,last_execution_timeFROM sys.dm_exec_query_stats qsCROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) stLEFT JOIN sys.dm_exec_requests r ON qs.sql_handle = r.sql_handleORDER BY 3 DESC
------解决方案--------------------
网络连接中 禁用再启用下网卡 试试
------解决方案--------------------
用SQL Profiler工具跟踪一下.
或
- SQL code
--占用CPU最多SELECT TOP 10 total_worker_time / execution_count AS [Avg CPU Time], (SELECT Substring(text, statement_start_offset / 2, ( CASE WHEN statement_end_offset = -1 THEN Len(CONVERT(NVARCHAR(max), text)) * 2 ELSE statement_end_offset END - statement_start_offset ) / 2) FROM sys.Dm_exec_sql_text(sql_handle)) AS query_text, *FROM sys.dm_exec_query_statsORDER BY [Avg CPU Time] DESC 找到后分析问题所在
------解决方案--------------------
应该是程序连接上后执行了什么耗CPU的SQL语句,
用SQL Profiler工具跟踪一下.
------解决方案--------------------
连接进去以后SYSPROCESS中看到有什么信息吗?有没有什么耗资源的执行?