内容简介:前言:性能测试不同情况一般解决方案:
前言:
性能测试不同情况
-
版本升级,已经有用户数据
-
新产品,无用户数据
一般解决方案:
-
同类产品对比
-
线上数据挖掘
-
目标驱动法(此方法从性能测试满足领域切入)
本次用户操作信息的数据收集及分析方案,适用范围:旧系统升级、未建立起流量回放机制
概要总结
1,通过IIS、Apache、Nginx建立用户信息收集机制
2,通过WebLog Expert进行数据分析,进而确定用户行为
作为常用的Web服务器IIS、Apache、Nginx,当用户通过客户端发送请求到Web服务器时,都会在访问日志中记录下来。
日志收集:
1,IIS:
IIS日志的设置方法说明如下。在IIS中找到需要的网站,打开日志功能,如下图:
IIS默认支持如下4种日志格式:
Microsoft IIS日志文件格式
信息记录在以逗号分隔的ASCII文本文件中
数据是固定的,不能自定义该日志
单个传输有多条记录
NCSA公用日志文件格式
信息记录在使用(美国)国际计算技术应用中心(NCSA)格式的ASCII文本文件中
数据是固定的,不能自定义该日志
单个传输有多条记录
W3C扩展日志文件格式
W3C(万维网联合会)扩展日志文件格式是SMTP服务及其他IIS服务的默认日志记录格式
数据是变化的,可以选择要跟踪的内容
此种格式是日志大小的很好的选择
信息记录在ASCII文本文件中
这种恶是包括某些仅适用于Web和文件传输协议(FTP)服务的字段选项
单个传输有多条记录
ODBC日志记录
使用此格式前,必须建立一个与开放式数据库连接(ODBC)兼容的数据库。
信息记录在数据库中
单个传输有多条记录
如果使用IIS作为Web服务器,建议使用W3C格式,这里可以通过格式后的选择字段功能为日志添加监控属性,数据越多,对后期分析可以提供的支持就越强,如下图
2,Apache:
Apache的访问日志格式支持自定义,打开Apache下的httpd.conf文件,使用LogFormat命令来查找系统默认的日志格式,也可以自行定义需要的日志格式。
在httpd.conf文件中找到如下内容:
LogFormat “%h %l %u %t \“%r\ “ %s %b \”%{Referer}i \”\”%{User-Agent}i\”“combined
LogFormat “%h %l %u %t \“%r \“ %s %b \”common
下面简单介绍一下LogFormat的使用格式。典型的记录格式如下:
LogFormat “%h %l %u %t \“%r \“ %s %b \”common
CustomLog logs/access_log common
它定义了一种特定的记录格式字符串,并给它取名为common
其中的“%”表示服务器用某种信息替换,其他字符则不做替换。引号(“)必须加反斜杠转义,一避免被解释为字符串的结束,格式字符串还可以包含特殊的控制符,如换行符”\n“。制表符”\t“
CustomLog指令建立一个使用制定别名的新日志文件,除非其文件名是以斜杠开头的绝对路径,否则其路径就是相对于ServerRoot的相对路径
上述配置是一种被统称为通用日志格式(CLF)的记录格式,它被许多不同的Web服务器所采用,并被许多日志分析程序识别,它产生的记录如下:
我们将记录的部分一个一个说明下:
127.0.0.1 :为发送请求到服务器的客户IP地址。如果HostnameLookups设置为ON,则服务器会尝试解析这个IP地址idea主机名并替换此处的IP地址,但并不推荐这样做,因为他会显著拖慢服务器,最好用一个日志后续处理器来判断主机名,比如logresolve。如果客户和服务器之间存在代理,那么记录中的这个IP地址代理的IP地址,而不是客户机的真实IP地址。
-(%l) :为客户端identd进程判断的RFC1413身份(identity),输出中的符号“-”表示此处的信息无效,除非在严格控制的内部网络中,此心刺通常很不可靠,不应该被使用。只有在将identityCheck指令设置为ON是,Apache试图得到这项信息。
Frank(%u) :为HTTP认证系统得到的访问该网页的客户标识(userid),环境变量REMOTE_USER会被设置为该值并提供给CGI脚本。如果状态吗是401,表示客户未通过认证,则此值没有意义,如果网页没有设置密码保护,则此项将是“-”
{10/Oct/2000:13:55:36 -0700}(%t) :为服务器完成请求处理的时间,其格式如下:
{日/月/年:时:分:秒 时区}
日=2个数字位
月=3个字母位
年=4个数字位
时=2个数字位
分=2个数字位
秒=2个数字位
时区=(+正|-负)4个数字位
可以在格式字符串中使用%{format}t来改变时间的输出形式,其中的format与C标准库中的strftime()用法相同。
“GET /Apache_pb.gif HTTP/1.0“(\”%r\”): 为客户端发出的包含许多有用信息的请求行。可以看出,该客户的动作是GET,请求的资源是/apache_pb.gif,使用的协议是HTTP/1.0。另外,还可以记录其他信息,如格式字符串“%m %U %q %H “会记录动作、路径、查询字符串、协议,其输入与“%r”一样。
2 00(%>s): 为服务器返回给客户端的状态码。这个信息非常有价值,因为他指示了请求的结果,或者被成功响应了(以2开头),或者被重定向了(以3开头),或者出错了(以4开头),或者产生了服务器端错误(以5开头)。完整的状态码列表参见HTTP规范(RFC2616).
2326(%b): 是返回给客户端的不包括响应头的字节数。如果没有信息返回,则此项应该是“-”,如果希望记录为“0”的形式,就应该用%b。
即:
首先使用LogFormat命令LogFormat “%h %l %u %t \“%r \“ %s %b \”common定义日志格式,然后在通过CustomLog命令CustomLog “c:/logs/access.log” common为日志设置存放地址。这样就完成了Apache日志的设定工作。
3,Nginx:
Nginx日志相关指令主要有如下2条:
a,Log_format,用来设置日志格式。
b,access_log,用来指定文件的存放路径、格式和缓存大小。
log_format格式
log_forma name(格式名称) 格式样式(即想要得到什么样的日志内容)
默认的示例如下:
注释如下:
$remote_addr:与$http_x_forwarded_for一起用于记录客户端的IP地址。
$remote_user:用来记录客户端用户名称。
$time_loca:用来记录访问时间与时区。
%request:用来记录请求的URL与HTTP协议。
%status:用来记录请求状态,成功是200。
$body_bytes_s ent:记录发送给客户端文件主体内容的大小。
$http_referer:用来记录是从哪个页面链接访问过来的
$http_uesr_agent:记录客户浏览器的相关信息。
通常Web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_addr得到的IP地址是反向代理服务器的IP地址。反向代理服务器在转发请求的HTTP信息头中,可以增加x_forwarded_for信息,用于记录原有客户端的IP地址和原来客户端的请求的服务器地址。举例如下:
用access_log
用log_format指令设置日志后,需要用access_log指令指定日志文件的存放路径,
access_log path(存放路径) format(自定义日志名称)
示例:
用log_format定义了一个mylogformat的日志,可以写成如下语法:
access_log logs/access.log mylogformat;
如果不想启用日志,语法如下:
access_log off;
在定义日志目录中要注意的是,nginx进程设置的用户和组必须有对该路径创建文件的权限,假设nginx的usr指令设置的用户名和用户组都是www,而log目录的用户名和组都是root,那么日志文件将无法被创建。
接着让用户在正常情况下使用一段时间这个配置了日志的系统,就能得到大量访问数据,以便于进行下一步的日志分析工作。
数据分析WebLog Expert:
WebLog Expert:一个强大的日志分析工具(PS:只能精确到小时,无法精确到分钟)
WebLog Expert能够分析网站的流量记录,将原始的流量记录分析出Activity statistics,Acdess statistics,Information about visitor,Referrers、Information about errors等基本而重要的流量信息,帮助测试人员了解网站的使用状况,另外它同时支持IIS和Apache日志,这也是选用该软件的原因之一。
由于近期并没有合适的项目实战,所以此部分并未有成果展示,这里附上简单的 工具 截图及官网上Report的示例图,感兴趣的同学可以查看下,十分好用且强大
官网: https://www.weblogexpert.com/
工具:
报告例图:
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。