博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IIS日志分析
阅读量:5806 次
发布时间:2019-06-18

本文共 2451 字,大约阅读时间需要 8 分钟。

Web服务事件查看器

  IIS服务器是我们常用的Web站点部署工具,而我们有时可能遇到IIS服务器的应用程序池莫名其妙的关闭了,或者是其他未知原因等等,我们这是可以通过微软提供的WebServer(Web服务事件查看器),来帮助我们查找原因。

参考:

IIS日志文件 

  默认情况下,IIS会产生日志文件,有些参数值得我们关注。参考:

IIS的设置界面如下(本文以 IIS 8 的界面为例)。在IIS管理器中,选择某个网站,双击【日志】图标,请参考下图:

将里面的日志文件拷贝出来分析。

日志文件是txt格式,我们可以通过两种方法处理它:直接复制在excel中;用log parser工具将txt文件导入到sql数据库中

本文以后者(因为可以通过查询刷选做更好的分析)讲述如何处理。

IIS日志文件处理步骤:

1、安装软件log parser2.2。(专门解析IIS日志)

2、在CMD中 进入到安装目录下,执行以下命令

logparser "SELECT * FROM C:\Users\yong-h\Desktop\log\u_ex18051010.log TO IISLog_table" -o:SQL -server:localhost -driver:"SQL Server" -database:hy -username:sa -password:1127 -createtable:ON

或者

logparser "SELECT * FROM 'C:\Users\yong-h\Desktop\log\u_ex18051010.log' to WebLog" -i:IISW3C -o:SQL -oConnString:"Driver={SQL Server};server=localhost;database=hy;Integrated Security=true" -createtable:ON

3、在sql数据库中将日期和时间合成一列
alter table [IISLog_table] add RequestTime datetime

update [IISLog_table] set RequestTime=dateadd(hh,8,convert(varchar(10),date,120) + ' ' + convert(varchar(13),time,114))

--DATEADD() 函数在日期中添加或减去指定的时间间隔。DATEADD(datepart,number,date)

--CONVERT() 函数可以用不同的格式显示日期/时间数据。CONVERT(data_type(length),data_to_be_converted,style)

注意:IIS日志的时间与计算机的系统时间不符,比如在中国时区就会相差8小时。

是因为:W3C 扩展日志文件定义日志采用GMT时间(即格林尼治标准时间),而中国在GMT +8时区,自然就相差八个小时了。

4、分析数据

  • 查找耗时操作

SELECT RequestTime,LogRow ,cIp as 客户端ip,sIp as 服务器ip,sPort,csMethod,csUriStem,timeTaken,scStatus as 协议状态 ,scWin32Status as Win32状态,csUriQuery,scBytes as 发送的字节数 ,csBytes as 接收的字节数据,csUserAgent

FROM [hy].[dbo].[IISLog_table]
where timeTaken>1000
GO

  • 查找协议状态不为200(ok)的

SELECT RequestTime,LogRow ,cIp as 客户端ip,sIp as 服务器ip,sPort,csMethod,csUriStem,

timeTaken,scStatus as 协议状态 ,scWin32Status as Win32状态,csUriQuery,scBytes as 发送的字节数 ,
csBytes as 接收的字节数据,csUserAgent
FROM [hy].[dbo].[IISLog_table]
where scStatus<>200

  • 统计协议状态

select scStatus, count(*) AS count

from [IISLog_table] with(nolock)
group by scStatus

  • 统计Win32状态(它记录了在处理请求过程中,发生的系统级别错误,例如网络传输错误。0:正常)

select scWin32Status, count(*) AS count

from [IISLog_table] with(nolock)
group by scWin32Status

--所有状态码都可以通过下面的cmd命令来获取对应的解释:

net helpmsg 64

其中

2 系统找不到指定的文件
64 客户端连接已关闭(或者断开)。。换句话说:可以从scwin32status=64的统计结果看出网站的响应速度是否能让用户满意。
121 传输超时
1236 本地网络中断

关于scwin32status与scStatus,我还想补充说明一下:它们没有关联。

比如请求这个地址:http://www.abc.com/test.aspx
有可能scStatus=200,但scwin32status=64,此时表示ASP.NET已成功处理请求,但是IIS在发送响应结果时,客户端的连接断开了。
另一种情况是:scStatus=500,但scwin32status=0,此时表示,在处理请求过程中发生了未捕获异常,但异常结果成功发送给客户端。

 

参考:

转载于:https://www.cnblogs.com/peterYong/p/9023248.html

你可能感兴趣的文章
我的友情链接
查看>>
sshd_config设置参数笔记
查看>>
LeetCode--112--路径总和
查看>>
感悟贴2016-05-13
查看>>
百度编辑器ueditor 光标位置的坐标
查看>>
DEV-C++ 调试方法简明图文教程(转)
查看>>
参加婚礼
查看>>
Java重写equals方法和hashCode方法
查看>>
Spark API编程动手实战-07-join操作深入实战
查看>>
EasyUI基础入门之Easyloader(载入器)
查看>>
Spring ’14 Wave Update: Installing Dynamics CRM on Tablets for Windows 8.1
查看>>
MySQL 备份与恢复
查看>>
TEST
查看>>
PAT A1037
查看>>
ReactiveSwift源码解析(三) Signal代码的基本实现
查看>>
(六)Oracle学习笔记—— 约束
查看>>
[Oracle]如何在Oracle中设置Event
查看>>
top.location.href和localtion.href有什么不同
查看>>
02-创建hibernate工程
查看>>
Scrum之 Sprint计划会议
查看>>