电脑频道 手机频道
网络技能 路由器
电脑零碎 电脑蓝屏
游戏攻略 明星八卦
钱汇娱乐网 最新更新
首页 > windows相干知识>注释 通告: 为呼应国度净网举动,局部内容曾经删除,感激网友了解。

iis日记剖析东西_网站运维东西运用iis日记剖析东西剖析iis日记(iis日记的设置装备摆设)_iis日记剖析

【2015-04-17 08:20:28】 泉源:网络 作者:福州电脑之家 批评:

关于一个需求临时维护的网站来说,怎样让网站持久波动运转是件很故意义的事变。有些在开辟阶段没有表露的题目很有能够就在运维阶段呈现了,这也是很正常的。另有些时分,我们盼望不时地优化网站,让网站更疾速的呼应用户恳求,这些事变都发作在开辟之后的运维阶段。

与开辟阶段差别的,运维阶段不行能让你去调试顺序,发明各种题目,我们只能经过种种零碎日记来剖析网站的运转情况,关于摆设在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 Files\Log Parser 2.2\LogParser.exe" -i:IISW3C -o:DATAGRID
"SELECT c-ip,cs-method,s-port,cs-uri-stem,sc-status,sc-win32-status,
sc-bytes,cs-bytes,time-taken FROM u_ex130615.log"


如今就可以以表格方式来阅读IIS日记了:

\



阐明:我不引荐用这种办法来剖析IIS日记,缘由有二点:
1. 慢:当日记文件稍大一点的时分,用它来剖析就比拟糜费工夫了(尤其是需求屡次统计时)。
2. 不方便:它支持的盘问语法不敷丰厚,没有像SQL Server针对数据表盘问那样片面。

引荐的IIS日记剖析办法

固然Log Parser支持将剖析的IIS日记以表格方式供人阅读,但是偶然候我们需求再做一些过细剖析时,能够会按差别的方法停止【屡次】盘问,关于这种需求,假如每次盘问都间接运转Log Parser,你会糜费许多工夫。侥幸的是,Log Parser支持将剖析后果以多种款式导出(以下为协助文档截图):

\

在此,我发起选择输入款式为 SQL 。
留意:这里的SQL并不是指SQLSERVER,而是指一切提供ODBC拜访接口的数据库。
我可以运用上面的下令将IIS日记导入到SQLSERVER中(阐明:为了不影响页面宽度我将下令文本换行了):


复制代码代码如下:
"C:\Program Files\Log Parser 2.2\logparser.exe"
"SELECT * FROM "D:\Temp\u_ex130615.log" to MyMVC_WebLog" -i:IISW3C -o:SQL
-oConnString:"Driver={SQL Server};server=localhost\sqlexpress;database=MyTestDb;Integrated Security=SSPI"
-createtable:ON


导入完成后,我们就可以用熟习的SQLSERVER来做种种盘问和统计剖析了,比方上面的盘问:


复制代码代码如下:
SELECT cip,csmethod,sport,csuristem,scstatus,scwin32status,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剧本如下:


复制代码代码如下:
alter table MyMVC_WebLog add RequestTime datetime
go
update MyMVC_WebLog set RequestTime=dateadd(hh,8,convert(varchar(10),date,120)
+ " " + convert(varchar(13),time,114))


2. 间接在导出IIS日记时,把工夫转换过去,此时要修正下令:


复制代码代码如下:
"C:\Program Files\Log Parser 2.2\logparser.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:\Temp\u_ex130615.log" to MyMVC_WebLog2"
-i:IISW3C -o:SQL
-oConnString:"Driver={SQL Server};server=localhost\sqlexpress;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日记中(500),但我所说的非常不只限于此。

本文所说的非常可分为四个局部:
1. (ASP.NET)顺序抛出的未捕捉非常,招致效劳器发生500的呼应输入。
2. 404之类的恳求资源不存在错误。
3. 大于500的效劳器错误,比方:502,503
4. 零碎错误或网络传输错误。

前三类非常可以用上面的盘问取得:


复制代码代码如下:
select scStatus, count(*) AS count, sum(timetaken * 1.0) /1000.0 AS sum_timetaken_second
from MyMVC_WebLog with(nolock)
group by scStatus
order by 3 desc


\


IIS日记中有一列:sc-win32-status ,它记载了在处置恳求进程中,发作的零碎级别错误,比方网络传输错误。
正常状况下,0 表现正常,呈现非零值意味着呈现了错误。我们可以如许统计这类错误


复制代码代码如下:
declare @recCount bigint;
select @recCount = count(*) from MyMVC_WebLog with(nolock)
select scWin32Status, count(*) AS count, (count(*) * 100.0 / @recCount) AS [percent]
from MyMVC_WebLog with(nolock)
where scWin32Status > 0
group by scWin32Status
order by 2 desc


\


下表列出了比拟罕见的与网络相干的错误及表明:

scWin32Status 寄义
64 客户端衔接已封闭(或许断开)
121 传输超时
1236 当地网络中缀


一切形态码都可以经过上面的下令来获取对应的表明:

D:\Temp>net helpmsg 64指定的网络名不再可用。


关于scwin32status与scStatus,我还想增补阐明一下:它们没有联系关系。
比方恳求这个地点:http://www.abc.com/test.aspx
有能够scStatus=200,但scwin32status=64,此时表现ASP.NET已乐成处置恳求,但是IIS在发送呼应后果时,客户真个衔接断开了。
另一种状况是:scStatus=500,但scwin32status=0,此时表现,在处置恳求进程中发作了未捕捉非常,但非常后果乐成发送给客户端。

再谈 scwin32status=64

记得曩昔看到 scStatus=200,scwin32status=64 这种状况时很不睬解,于是搜刮了互联网,种种答案都有,有的乃至说与网络爬虫有关。为了验证种种答案,我做了一个实验。我写一个ashx文件,用它来模仿永劫间的网络传输,代码如下:


复制代码代码如下:
public class Test_IIS_time_taken : IHttpHandler {

public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";</p><p> System.Threading.Thread.Sleep(1000 * 2);

context.Response.Write(string.Format("{0}, {1}\r\n", "Start", DateTime.Now));
context.Response.Flush();

System.Threading.Thread.Sleep(1000 * 2);</p><p> for( int i = 0; i < 20; i++ ) {
context.Response.Write(string.Format("{0}, {1}\r\n", i, DateTime.Now));
context.Response.Flush();
System.Threading.Thread.Sleep(1000 * 1);
}</p><p> context.Response.Write("End");
}


段代码很复杂,我不想做过多的表明,只想说一句:我用Thread.Sleep与Response.Flush这二个办法来模仿一个永劫间的继续发送进程。

我们可以在阅读器中看到如许的输入(表现还没有完全完毕时我截图了)
\

我把这个测试做了8次,只要2次是全部表现完成了,其他6次我提早封闭了阅读器窗口。
然后,我们再来看IIS日记的内容:
\

依据IIS日记并联合我本人的操纵可以发明:
1. 当我提早封闭阅读器窗口时,就会看到scStatus=200,scwin32status=64
2. 假如恳求内容全部表现完成,我就会看到scStatus=200,scwin32status=0
从这个实验我们还可以发明:timeTaken 包括了网络传输工夫。


依据这个实验的后果,你能否想过一个题目:
假如你的网站的IIS日记中呈现了少量的scStatus=200,scwin32status=64,并且恳求是由用户的阅读器提倡的。
这是什么缘由形成的呢?
我的【猜测】是:用户在拜访这个网站时曾经不肯意再等候了,他们把阅读器窗口关失了。
换句话说:可以从scwin32status=64的统计后果看出网站的呼应速率能否能让用户称心。

寻觅功能题目

IIS日记中有一列叫:timeTaken,在IIS的界面中表现了它的寄义:一切工夫。
这个所用工夫的界说是:从效劳端收到恳求的第一个字节开端起,直到把一切呼应内容发送出去为止的工夫。
微软的网站有对这个字段做过阐明:http://support.microsoft.com/kb/944884

晓得了timeTaken的界说后,我们就可以应用它来剖析一些恳求的处置工夫,即功能剖析。

比方,我想检查最慢的20个页面的加载状况,可以如许盘问:

select top 20 csuristem,scstatus,scwin32status,scbytes,csbytes,timetakenfrom dbo.MyMVC_WebLog with(nolock)where csUriStem like "/Pages/%"order by timeTaken desc

再或许我想再看看最慢的20个AJAX状况的呼应状况,可以如许盘问:


复制代码代码如下:
select top 20 csuristem,scstatus,scwin32status,scbytes,csbytes,timetaken
from dbo.MyMVC_WebLog with(nolock)
where csUriStem like "/Pages/%"
order by timeTaken desc

再或许我想再看看最慢的20个AJAX状况的呼应状况,可以如许盘问:


复制代码代码如下:
select top 20 csuristem,scstatus,scwin32status,scbytes,csbytes,timetaken
from 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. 有没有404错误?
2. 能否存在少量的304恳求?
3. 能否存在少量反复恳求?


当发明有404呼应时,我们应该剖析发生404的缘由:
1. 是用户输出错误的URL地点吗?
2. 照旧开辟职员援用不存在的资源文件?
假如是后者,就应该尽快移除有效的援用,由于404呼应也是一个页面呼应,并且它们也会占用网络传输工夫,尤其是这类恳求不克不及缓存,它会不断呈现,糜费网络资源。

783x377

783x377-39K-PNG

网站运维东西运用iis日记剖析东西剖析iis日记(...

相干搜刮:iis日记剖析东西 iis日记剖析 iis运维 日记剖析 光年日记剖析东西 日记剖析东西 nginx日记剖析 hadoop日记剖析 apache日记剖析东西

下一篇:最初一页

分享:
下载
宣布关于《iis日记剖析东西_网站运维东西运用iis日记剖析东西剖析iis日记(iis日记的设置装备摆设)_iis日记剖析》的批评

福州电脑网(福州iThome)专业电脑/盘算机学习网站.提供电脑维修知识,包罗盘算机软件/硬件维修知识,路由器/交流机/网络设置,电脑蓝屏,网络/it知识学习等等钱汇网址学习材料.

免责声明:本站一切信息内容仅供参考,若有得罪您的权柄请联络我们删除!请各人留意:本站删帖完全收费。邮箱:

Copyright (C) FziThome.com, All Rights Reserved.

版权一切 闽ICP备14002611号-3