1. 一般衡量网站性能有哪些指标?
性能指标主要有响应时间,吞吐量,并发量,性能计数器。
1)响应时间
指应用执行一个操作需要的时间,即从发出请求到最后收到响应数据所需要的时间。
系统常用操作响应时间表
操作
|
响应时间
|
打开一个网站
|
几秒
|
数据库查询一条记录(有索引)
|
十几毫秒
|
机械磁盘一次寻址定位
|
4毫秒
|
从机械磁盘顺序读取1M数据
|
2毫秒
|
从SSD磁盘顺序读取1M数据
|
0.3毫秒
|
从远程分布式换成Redis读取一个数据
|
0.5毫秒
|
从内存读取1M数据
|
十几微秒
|
Java程序本地方法调用
|
几微秒
|
网络传输2Kb数据
|
1微秒
|
实践中通常采用的办法是重复请求,比如一个请求操作重复执行1万次,测试一万次执行的总响应时间之和,然后除以1万,就得到单次请求的响应时间。
2)吞吐量
指单位时间内系统处理的请求数量,体现系统的整体处理能力。对于网站,可用“请求数/秒”、“页面数/秒”或“访问人数/天”、“处理业务数/小时”等来衡量。重要指标有TPS(每秒处理的事物数)、QPS(每秒查询的请求数)、HPS(每秒HTTP请求数)等。
3)并发量
指系统能够同时处理的请求的数目,这个数字反映了系统的负载性能。对于网站而言,并发数指网站用户同时提交请求的用户数目。
4)性能计数器
描述服务器或操作系统性能的一些数据指标。如System Load、对象与线程数、内存使用、CPU使用、磁盘与网络I/O等使用情况。通过对这些指标设置报警阈值,当监控系统发现性能计数器超过阈值时,就向开发人员和运维报警,及时发现异常并处理。
2. 怎么测试网站性能?
性能测试具体可以细分为性能测试、负载测试、压力测试、稳定性测试。
1)性能测试
以系统设计初期规划的性能指标为预期目标,对系统不断施加压力,验证系统在资源可接受范围内是否能达到预期。
2)负载测试
对系统不断增加并发请求以增加系统压力,直到系统的某项或多项性能指标达到安全临界值,这时继续对系统施加压力,系统的处理能力不但不会提高,反而会下降。
3)压力测试
超过安全负载的情况下,对系统施加压力,直到系统崩溃或不能再处理任何请求,以此获得系统最大压力承受能力。
4)稳定性测试
被测试系统在特定硬件、软件、网络环境条件下,给系统加载一定业务压力,使系统运行一段较长时间,以此检验系统是否稳定。
3. 怎么进行压力测试?
压力测试工具有http_load、apache ab、siege。
1)http_load
下载:http://acme.com/software/http_load/(点击Fetch the software即可)
安装:
yum -y install gcc gcc-c++ #安装GCC编辑器--若已安装请忽略 tar xzvf http_load-09mar2106.tar.gz #解压http_load压缩包 cd http_load-12mar2006 #进入http_load目录 mkdir /usr/local/man #创建目录 make && make install #编译并安装
命令格式:
http_load -p 并发访问进程数 -f 访问总数 需要访问的URL文件 http_load -r 每秒访问频率 -s 访问时间 需要访问的URL文件 // 参数说明:通常参数pf一起使用,参数rs一起使用。 -parallel 简写 -p :并发的用户进程数。 -fetches 简写 -f : 总计的访问次数。 -rate 简写 -r : 每秒的访问频率。 -seconds 简写 -s :总计的访问时间。
使用:
新建一个urls.txt,urls.txt 是一个url 列表,每个url 单独的一行。
在文件中加入一行:http:/.wwwkwx.gd/(不能有任何空格存在,否则会报unknown protocol )
① 测试网站是否能承受住预期的访问压力
执行http_load -rate 5 -seconds 10 urls.txt,含义为在10秒内保持一定的频率访问目标url。
结果分析:
41 fetches, 1020 max parallel, 851898 bytes, in 10.0008 seconds # 一共请求连接41次,最大并发线程1020个,持续10.0008秒内,总传输速率为 851898bytes 20778 mean bytes/connection #每次请求连接平均数据量(851898÷41) 4.09969 fetches/sec, 85183.3 bytes/sec #每秒的响应请求连接数为4.09969个,每秒传输的数据为85183.3btyes/毫秒 msecs/connect: 264.607 mean, 269.482 max, 262.187 min #每次连接平均响应时间:264.607毫秒,最大时间:269.482毫秒,最小时间:262.187毫秒 msecs/first-response: 1949.27 mean, 5394.21 max, 380.501 min #每次连接平均返回时间:1949.27毫秒,最大时间:5394.21毫秒,最小时间:380.501毫秒 HTTP response codes: code 200 -- 41 #HTTP返回码:200 ,一共41次。
主要参考fetches/sec、msecs/connect数值, 前者对应QPS,表示每秒的响应请求数,后者对应response time,表示每个连接的响应时间。