位置: 编程技术 - 正文

网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)(网站的运维)

编辑:rootadmin

推荐整理分享网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)(网站的运维),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:网站运维服务内容,网站的运维,网站运维工具使用说明书,网站的运维,网站运维工具使用说明书,网站运维负责什么,网站的运维,网站运维工具使用方法,内容如对您有帮助,希望把文章链接给更多的朋友!

对于一个需要长期维护的网站来说,如何让网站长久稳定运行是件很有意义的事情。有些在开发阶段没有暴露的问题很有可能就在运维阶段出现了,这也是很正常的。还有些时候,我们希望不断地优化网站,让网站更快速的响应用户请求,这些事情都发生在开发之后的运维阶段。

与开发阶段不同的,运维阶段不可能让你去调试程序,发现各类问题,我们只能通过各种系统日志来分析网站的运行状况,对于部署在IIS上的网站来说,IIS日志提供了最有价值的信息,我们可以通过它来分析网站的响应情况,来判断网站是否有性能问题,或者存在哪些需要改进的地方。

IIS日志包含了哪些信息

我前面说到【IIS日志提供了最有价值的信息】,这些信息有哪些呢?看看这个截图吧:

这里面记录了:1. 请求发生在什么时刻,2. 哪个客户端IP访问了服务端IP的哪个端口,3. 客户端工具是什么类型,什么版本,4. 请求的URL以及查询字符串参数是什么,5. 请求的方式是GET还是POST,6. 请求的处理结果是什么样的:HTTP状态码,以及操作系统底层的状态码,7. 请求过程中,客户端上传了多少数据,服务端发送了多少数据,8. 请求总共占用服务器多长时间、等等。

这些信息在分析时有什么用途,我后面再说。先对它有个印象就可以了。

IIS日志的配置

默认情况下,IIS会产生日志文件,不过,还是有些参数值得我们关注。IIS的设置界面如下(本文以 IIS 8 的界面为例)。

在IIS管理器中,选择某个网站,双击【日志】图标,请参考下图:

此时(主要部分)界面如下:

在截图中,日志的创建方式是每天产生一个新文件,按日期来生成文件名(这是默认值)。说明:IIS使用UTC时间,所以我勾选了最下面的复选框,告诉IIS用本地时间来生成文件名。

点击【选择字段】按钮,将出现以下对话框:

注意:【发送的字段数】和【接收的字节数】默认是没有选择的。建议勾选它们。至于其它字段,你可以根据需要来决定是否要勾选它们。

如何分析IIS日志

如果你按照我前面介绍的方法设置了IIS日志参数,那么IIS在处理请求后(的一段时间之后),会生成IIS日志。我们可以在【日志界面】的右边区域【操作】中点击【查看日志文件】快速定位到IIS日志的根目录,然后到目录中寻找相应的日志文件(默认会根据应用程序池序号来区分目录)。

比如:我找到了我需要的日志:

这个文件一大堆密密麻麻的字符,现在我该如何分析它呢?

有个叫 Log Parser 的工具就可以专门解析IIS日志,我们可以用它来查看日志中的信息。比如我可以运行下面的命令行(说明:为了不影响页面宽度我将命令文本换行了):复制代码代码如下:"C:Program FilesLog Parser 2.2LogParser.exe" -i:IISW3C -o:DATAGRID "SELECT c-ip,cs-method,s-port,cs-uri-stem,sc-status,sc-win-status,sc-bytes,cs-bytes,time-taken FROM u_ex.log"

现在就可以以表格形式来阅读IIS日志了:

说明:我不推荐用这种方法来分析IIS日志,原因有二点:1. 慢:当日志文件稍大一点的时候,用它来分析就比较浪费时间了(尤其是需要多次统计时)。2. 不方便:它支持的查询语法不够丰富,没有像SQL Server针对数据表查询那样全面。

推荐的IIS日志分析方法

虽然Log Parser支持将解析的IIS日志以表格形式供人阅读,但是有时候我们需要再做一些细致分析时,可能会按不同的方式进行【多次】查询,对于这种需求,如果每次查询都直接运行Log Parser,你会浪费很多时间。幸运的是,Log Parser支持将解析结果以多种格式导出(以下为帮助文档截图):

在此,我建议选择输出格式为 SQL 。注意:这里的SQL并不是指SQLSERVER,而是指所有提供ODBC访问接口的数据库。我可以使用下面的命令将IIS日志导入到SQLSERVER中(说明:为了不影响页面宽度我将命令文本换行了):复制代码代码如下:"C:Program FilesLog Parser 2.2logparser.exe" "SELECT * FROM 'D:Tempu_ex.log' to MyMVC_WebLog" -i:IISW3C -o:SQL -oConnString:"Driver={SQL Server};server=localhostsqlexpress;database=MyTestDb;Integrated Security=SSPI" -createtable:ON导入完成后,我们就可以用熟悉的SQLSERVER来做各种查询和统计分析了,例如下面的查询:

复制代码代码如下:SELECT cip,csmethod,sport,csuristem,scstatus,scwinstatus,scbytes,csbytes,timetaken FROM dbo.MyMVC_WebLog

如果如下:

注意:1. IIS日志在将结果导出到SQLSERVER时,字段名中不符合标识符规范的字符将会删除。 例如:c-ip 会变成 cip, s-port 会变成 sport 。2. IIS日志中记录的时间是UTC时间,而且把日期和时间分开了,导出到SQLSERVER时,会生成二个字段:

date, time这二个字段看起来很不舒服,对吧?我也很反感这个结果,下面来说说的二种解决方法:

1. 在SQLSERVER中增加一列,然后把UTC时间换成本地时区的时间,T-SQL脚本如下:

网站运维工具使用iis日志分析工具分析iis日志(iis日志的配置)(网站的运维)

复制代码代码如下:alter table MyMVC_WebLog add RequestTime datetimegoupdate MyMVC_WebLog set RequestTime=dateadd(hh,8,convert(varchar(),date,) + ' ' + convert(varchar(),time,))2. 直接在导出IIS日志时,把时间转换过来,此时要修改命令:

复制代码代码如下:"C:Program FilesLog Parser 2.2logparser.exe" "SELECT TO_LOCALTIME(TO_TIMESTAMP(ADD(TO_STRING(date, 'yyyy-MM-dd '), TO_STRING(time, 'hh:mm:ss')), 'yyyy-MM-dd hh:mm:ss')) AS RequestTime, * FROM 'D:Tempu_ex.log' to MyMVC_WebLog2" -i:IISW3C -o:SQL -oConnString:"Driver={SQL Server};server=localhostsqlexpress;database=MyTestDb;Integrated Security=SSPI"-createtable:ON

再看这三列:

复制代码代码如下:select RequestTime, date, time from MyMVC_WebLog2

这样处理后,你就可以直接把date, time这二列删除了(你也可以在导出IIS日志时忽略它们,但要明确指出每个字段名)。

IIS日志中的UTC时间问题就说到这里,但愿每个人都懂了~~~~~~~~~~~

IIS日志中的异常记录

IIS日志中记录了每个请求的信息,包括正常的响应请求和有异常的请求。

这里所说的【异常】与 .net framework 中的异常没有关系。对于一个ASP.NET程序来说,如果抛出一个未捕获异常,会记录到IIS日志中(),但我所说的异常不仅限于此。

本文所说的异常可分为四个部分:1. (ASP.NET)程序抛出的未捕获异常,导致服务器产生的响应输出。2. 之类的请求资源不存在错误。3. 大于的服务器错误,例如:,. 系统错误或网络传输错误。

前三类异常可以用下面的查询获得:复制代码代码如下:select scStatus, count(*) AS count, sum(timetaken * 1.0) /.0 AS sum_timetaken_secondfrom MyMVC_WebLog with(nolock)group by scStatusorder by 3 desc

IIS日志中有一列:sc-win-status ,它记录了在处理请求过程中,发生的系统级别错误,例如网络传输错误。正常情况下,0 表示正常,出现非零值意味着出现了错误。我们可以这样统计这类错误复制代码代码如下:declare @recCount bigint;select @recCount = count(*) from MyMVC_WebLog with(nolock)select scWinStatus, count(*) AS count, (count(*) * .0 / @recCount) AS [percent] from MyMVC_WebLog with(nolock)where scWinStatus > 0group by scWinStatusorder by 2 desc

下表列出了比较常见的与网络相关的错误及解释:

scWinStatus 含义 客户端连接已关闭(或者断开) 传输超时 本地网络中断

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

关于scwinstatus与scStatus,我还想补充说明一下:它们没有关联。比如请求这个地址: scwinstatus=

记得以前看到 scStatus=,scwinstatus= 这种情况时很不理解,于是搜索了互联网,各种答案都有,有的甚至说与网络爬虫有关。为了验证各种答案,我做了一个试验。我写一个ashx文件,用它来模拟长时间的网络传输,代码如下:复制代码代码如下:public class Test_IIS_time_taken : IHttpHandler { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "text/plain";</p><p> System.Threading.Thread.Sleep( * 2); context.Response.Write(string.Format("{0}, {1}rn", "Start", DateTime.Now)); context.Response.Flush(); System.Threading.Thread.Sleep( * 2);</p><p> for( int i = 0; i < ; i++ ) { context.Response.Write(string.Format("{0}, {1}rn", i, DateTime.Now)); context.Response.Flush(); System.Threading.Thread.Sleep( * 1); }</p><p> context.Response.Write("End"); }段代码很简单,我不想做过多的解释,只想说一句:我用Thread.Sleep与Response.Flush这二个方法来模拟一个长时间的持续发送过程。

我们可以在浏览器中看到这样的输出(显示还没有完全结束时我截图了)

我把这个测试做了8次,只有2次是全部显示完成了,其余6次我提前关闭了浏览器窗口。然后,我们再来看IIS日志的内容:

根据IIS日志并结合我自己的操作可以发现:1. 当我提前关闭浏览器窗口时,就会看到scStatus=,scwinstatus=. 如果请求内容全部显示完成,我就会看到scStatus=,scwinstatus=0从这个试验我们还可以发现:timeTaken 包含了网络传输时间。

根据这个试验的结果,你是否想过一个问题:如果你的网站的IIS日志中出现了大量的scStatus=,scwinstatus=,而且请求是由用户的浏览器发起的。这是什么原因造成的呢?我的【猜想】是:用户在访问这个网站时已经不愿意再等待了,他们把浏览器窗口关掉了。换句话说:可以从scwinstatus=的统计结果看出网站的响应速度是否能让用户满意。

寻找性能问题

IIS日志中有一列叫:timeTaken,在IIS的界面中显示了它的含义:所有时间。这个所用时间的定义是:从服务端收到请求的第一个字节开始起,直到把所有响应内容发送出去为止的时间。微软的网站有对这个字段做过说明: top csuristem,scstatus,scwinstatus,scbytes,csbytes,timetakenfrom dbo.MyMVC_WebLog with(nolock)where csUriStem like '/Pages/%'order by timeTaken desc

再或者我想再看看最慢的个AJAX情况的响应情况,可以这样查询:

复制代码代码如下:select top csuristem,scstatus,scwinstatus,scbytes,csbytes,timetakenfrom dbo.MyMVC_WebLog with(nolock)where csUriStem like '/ajax/%'order by timeTaken desc

总之,寻找性能问题的方法就是:在查询选择timeTaken字段,并且用它做降序排序。

注意:scbytes,csbytes 这二个字段也是值得我们关注的:1. csbytes如果过大,我们就要分析一下到底是不是因为表单包含了过多的无用数据,可否将表单拆分。 csbytes变大还有一种可能:Cookie太大,但它会表现为很多请求的csbytes都偏大,因此容易区分。2. scbytes如果过大,我们就要检查页面是否没有分页,或者可以考虑用按需加载的方式来实现。典型的情况是:当大量使用ViewState时,这二个值都会变大。因此我们能通过IIS日志发现ViewState的滥用问题。还有一种特殊情况是:上传下载文件也会导致这二个数值变大,原因我就不解释了。

scbytes,csbytes,不管是哪个数值很大,都会占用网络传输时间,对于用户来说,就需要更长的等待时间。

一下子说了三个字段,在寻找性能问题时,到底该参考哪个呢?我认为:应该优先关注timeTaken,因为它的数值直接反映了用户的等待时间(不包括前端渲染时间)。如果timeTaken过大时,有必要检查scbytes,csbytes是否也过大,如果后二者也过大,那么优化的方向就是减少数据传输量,否则表示是程序处理占用了大量的时间,应该考虑优化程序代码。

寻找可改进的目标

除了可以从IIS日志中发现性能问题,还可以用它来寻找可改进的目标。例如:1. 有没有错误?2. 是否存在大量的请求?3. 是否存在大量重复请求?

当发现有响应时,我们应该分析产生的原因:1. 是用户输入错误的URL地址吗?2. 还是开发人员引用不存在的资源文件?如果是后者,就应该尽快移除无效的引用,因为响应也是一个页面响应,而且它们也会占用网络传输时间,尤其是这类请求不能缓存,它会一直出现,浪费网络资源。

win中通过系统文件检查器帮你解决DLL文件丢失问题 用系统文件检查器工具,治理员可以扫描所有受保护的文件以验证其版本。系统文件检查器工具还检查和重新填充%SystemRoot%SystemDllcache文件夹。假如Dllc

windows 安全之:取消IE安全提示对话框 WindowsServer作为Microsoft最新推出的服务器操作系统,相比Windows/XP系统来说,各方面的功能确实得到了增强,尤其在安全方面,总体感觉做的还算不

win IE工具选项全面优化(上网加速) win,因为作为服务型的系统,所以在很多方面都做了精密的设置,有些设置虽然保障了系统的安全性,但是却影响了系统的运行速度,所以为了能够

标签: 网站的运维

本文链接地址:https://www.jiuchutong.com/biancheng/352502.html 转载请保留说明!

上一篇:图解WIN Server 2003配置VPN服务器的具体步骤(纸嫁衣6第四章攻略全文图解)

下一篇:windows 2003安全之:取消IE安全提示对话框(win2003安全模式怎么进)

  • 视同销售行为的涉税处理?
  • 消费税应该怎么缴纳
  • 开发商交的税费是什么
  • 红冲去年暂估的费用怎么做账
  • 税控系统技术维护费会计处理280
  • 利息按月计提分录
  • 住宿发票规格型号一栏写什么
  • 对方公司已经注销,欠钱收不回
  • 领用低值易耗品的记账凭证
  • 应付债券利息计入哪里
  • 长期待摊费用税前扣除
  • 丢失发票联和抵扣联
  • 销售旧房不能取得评估价格
  • 合同履约成本合同结算如何处理抵消
  • 用于集体福利的消费税
  • 施工企业项目部职责
  • 合同副本和正本区别
  • 金融机构对服务的要求
  • 税务局申请发票
  • 银行汇票的背书转让金额
  • 企业所得税免征和不征
  • 资金账簿印花税滞纳金怎么算
  • 向承兑人提示付款
  • 收回委托加工物资的账务处理
  • 财政收支结余
  • 餐费发票可以抵扣成本吗
  • 购入固定资产的借款利息支出
  • 有进项没销项怎么处理,可以结转成本吗
  • 外汇关闭时间
  • 未分配收益余额在哪方
  • 补缴税款怎么补
  • php readfile
  • 购进商品发生溢余的核算
  • 购买农产品没有发票入帐怎么办
  • 税务安全证书不成功什么意思
  • php流程图
  • uniapp scroll-view 上下滑动
  • uniapp官方教程
  • 数据结构的单链表
  • 产成品核算的内容
  • 个体双定户税率
  • 差旅费取得发票怎么处理
  • 车船使用税代征手续费
  • 在成本了核算工资怎么算
  • 不同单位发的劳务费会收税吗
  • 汇算清缴调增都有哪些项目
  • 不单独计价的包装物押金计入什么科目
  • 物业公司购买空调合法吗
  • 一般纳税人开具的普票可以抵扣吗
  • 其他应收款的账龄如何计算时间
  • 损益类科目都是当期损益吗
  • 长期股权投资与其他权益工具投资的区别
  • 现金池管理
  • 资产评估机构可以评估土地吗
  • 固定资产溢余
  • 中小型企业应收账款风险管理
  • 调整以前年度所得
  • 销售返利是否需要交税
  • 公司注销固定资产必须清理吗
  • 应付账款的贷方等于预收账款的借方
  • 建筑升降机厂家
  • 施工企业内部管理制度
  • phpstorm配置php环境 mac os
  • mysql提高效率
  • sql批量替换字符串
  • 电脑怎么调win7系统
  • linux怎么配置vim
  • windows8开始菜单消失了怎么恢复
  • 如何关闭win8的windows defender
  • win8系统文件
  • [置顶] 此外,车牌号:454118(懂得都懂[doge])
  • jQuery基于ajax()使用serialize()提交form数据的方法
  • disk指令
  • jquery制作下拉菜单
  • js实现拖拽功能
  • 福建社保官方网站
  • 青椒课堂怎么激活登录
  • 公共基础设施项目所得税优惠目录
  • 免抵退税办法不得抵扣的进项
  • 关税是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设