我们先来看看iisapp的一些参数 iisapp -a pid 可以查出对应的域名 反之 iisapp -p domain 查pid的语法 iisapp [a/ AppPoolName | /p AppPoolID] 参数 /a AppPoolName 指定特定应用程序池的名称。(可选项) /p AppPoolID 按 ID 号指定应用程序池。(可选项) 注释 如果未指定应用程序池名或 ID,则 iisapp 列出所有运行应用程序。 仅当使用 /s 时, 才可使用 /u 和 /p 命令行选项。必须同时使用 /p 和 /u 才能提供用户密码。 Iisext.vbs 执行 IIS 管理器中可用的相同操作。可使用任何一种工具管理 IIS 网站。 发出命令的计算机必须正在运行 Windows XP 或 Windows Server 2003 操作系统。用户必须是命令所影响的计算机上的 Administrators 组成员。 命令所影响的计算机必须是运行带有 Internet 信息服务 (IIS) 6.0 的 Windows Server 2003 的服务器。 说明一下:w3wp.exe为IIS里面的应用程序池进程,有几个进程就会有几个w3wp.exe,会发现某个w3wp.exe进程CPU和内存都高得可怕。 好,那我们来看看具体实践中该如何解决首先是windows2003 首先打开windows任务管理器–点击查看—选择列–把PID给钩上,就可以在进程里面看到PID的选项了。 点击运行–输入CMD–输入iisapp -a—很奇怪,这里显示PID的,是用弹出窗口一个个出现的,不知道别人会不,,反正我就是这样,太不利于查看了。 注意,希望人BLOG听说第一次运行,会提示没有js支持,点击确定。然后再次运行就可以了。这样就可以看到pid对应的应用程序池,这个我就没测试了。 这样吧,先再CMD里面输入:cd %systemroot%\system32 然后再输入:cscrIPt.exe iisapp.vbs -a CMD窗口显示如下: W3WP.exe PID: 2488 AppPoolId: AppPool #26 W3WP.exe PID: […]
View Details经常在论坛看到问高CPU的问题,简单的总结一下。 1,首先你要确认,高CPU是不是是SQL SERVER进程引起的还是别的进程引起的,这个很容易,直接看任务管理器。 2,如果从任务管理器看出高CPU确实是用SQL SERVER引起的。 3,如果是SQL SERVER引起的。 3.1SQL SERVER的一个比较BAD的执行计划引起的,比如说缺少必要的INDEX,引起了hash join什么的。这个也分成2种: 1,造成高CPU的语句已经执行结束,这个时候可以用下面的语句来检查。 select highest_cpu_queries.plan_handle, highest_cpu_queries.total_worker_time, q.dbid, q.objectid, q.number, q.encrypted, q.[text] from (select top 50 qs.plan_handle, qs.total_worker_time from sys.dm_exec_query_stats qs order by qs.total_worker_time desc) as highest_cpu_queries cross apply sys.dm_exec_sql_text(plan_handle) as q order by highest_cpu_queries.total_worker_time desc 解释一下sys.dm_exec_query_stats: sys.dm_exec_query_stats返回缓存查询计划的聚合性能统计信息。每个查询计划在该视图中对应一行,并且行的生存期与计划本身相关联。在从缓存删除计划时,也将从该视图中删除对应行。 可查看帮助文档:ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.zh-CHS/tsqlref9/html/eb7b58b8-3508-4114-97c2-d877bcb12964.htm 3.1.2,造成高CPU的语句正在运行,这个时候可以用下面的语句来检查。 SELECT st.text, qp.query_plan, rq.* FROM sys.dm_exec_requests RQ CROSS APPLY sys.dm_exec_sql_text(rq.sql_handle) as st CROSS APPLY sys.dm_exec_query_plan(rq.plan_handle) as qp order by RQ.CPU_time desc 3.2 开启了SQL profiler. 通过3.1.2可以看到 sp_trace_getdata这个SP在运行。 […]
View Details— 查看性能记数器 SELECT * FROM sys.dm_os_performance_counters — 执行过的线程所遇到的所有等待(不是当前正在运行的线程, 为自上次重置统计信息或启动服务器以来累积的数据),可分析靠前的几个等待较高的事件。 select * from sys.dm_os_wait_stats order by wait_time_ms desc 该动态视图的细节,请查看帮助文档. — 重置该动态视图 DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR); GO — 正在等待某些资源的任务的等待队列 select * from sys.dm_os_waiting_tasks order by wait_duration_ms desc 内存使用: 查看当前由 SQL Server 分配的内存对象(KB): select sum((page_size_in_bytes/1024)*max_pages_allocated_count) from sys.dm_os_memory_objects; 查看系统内存当前信息: select * from sys.dm_os_sys_memory (这个动态视图只在sql 2008中才有) select cpu_count, hyperthread_ratio, scheduler_count, physical_memory_in_bytes / 1024 / 1024 […]
View Details