关于网站优化方面的总结

网站优化

因为采用的是分布式安装,所以需要对http端和php端进行相关的优化,以便提高访问速度。

优化启用网站压缩deflate

开启apache的Gzip(deflate)功能
gzip可以极大的加速网站,有时压缩比率高到80%,最少都有40%以上,还是相当不错的。在Apache2之后的版本,模块名不叫gzip,而叫mod_deflate。
打开http的终端,对其进行下面的操作
1.查看并启用mod_deflate ,压缩传输
查看mod_deflate:

[root@http ~]# apachectl -M |grep deflate

如果有显示,则表示已启用压缩;

[root@http ~]# apachectl -M | grep deflate
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::8a19:a71e:21a5:16ec. Set the 'ServerName' directive globally to suppress this message
 deflate_module (shared)

如果没有显示,则需要手动启动deflate模块:

[root@http ~]# vim /usr/local/httpd/conf/httpd.conf
定位并去除"#"
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so

mod_deflate:是压缩模块,就是对要传输到客户端的代码进行gzip压缩;mod_headers:告诉浏览器页面使用了gzip压缩,如果不开启,浏览器就会对gzip压缩过的页面进行下载,而无法正常显示。

2.在httpd.conf配置文件末尾,添加deflate参数配置

[root@http ~]# vim /usr/local/httpd/conf/httpd.conf
末尾添加:
<IfModule mod_deflate.c>
 DeflateCompressionLevel 6
 SetOutputFilter DEFLATE 
 #AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php
 #AddOutputFilterByType DEFLATE image/*
 AddOutputFilterByType DEFLATE text/*
 AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript 
 AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp 
 SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary 
 SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
</IfModule>

参数解释:

DeflateCompressionLevel 9  #压缩程度的等级,预设可以采用6,以维持耗用处理器效能与网页压缩质量的平衡。

SetOutputFilter DEFLATE  #设置输出过滤器,对输出启用压缩,必须的,就像一个开关一样,告诉apache对传输到浏览器的内容进行压缩。

AddOutputFilterByType DEFLATE text/*  #设置对文件是文本的内容进行压缩,例如text/html text/css text/plain 等。

AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript  #对javascript文件进行压缩。

AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp  #对php类型的文件进行压缩。

SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary  #设置不对后缀gif,jpg,jpeg,png的图片文件进行压缩。注:?:表示不会捕获( )里内容了。

SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary  #同上,就是设置不对exe,tgz,gz等的文件进行压缩。

SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary  #同上就是设置不对pdf,avi,mp3等的文件进行压缩。

3.保存退出,重启服务

[root@http ~]# systemctl restart httpd

优化启用网站缓存expires

这个是非常有用的优化,mod_expires可以减少20-30%左右的重复请求,让重复的用户对指定的页面请求结果都CACHE在本地,根本不向服务器发出请求。但要注意更新快的文件不要这么做。
这个模块控制服务器应答时的Expires头内容和Cache-Control头的max-age指令。有效期(expiration date)可以设置为相对于源文件的最后修改时刻或者客户端的访问时刻。
在http的终端上进行操作
1.修改网站配置文件,启动expires模块

[root@http ~]# vim /usr/local/httpd/conf/httpd.conf
定位并去除"#"
LoadModule expires_module modules/mod_expires.so

2.在配置文件末尾添加,expires配置参数

[root@http ~]# vim /usr/local/httpd/conf/httpd.conf
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType text/css "now plus 1 month"
ExpiresByType application/x-javascript "now plus 5 day"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/bmp "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/png "access plus 1 minute"
ExpiresByType application/x-shockwave-flash "access plus 1 month"
ExpiresDefault "now plus 0 minute"
</IfModule>

相关参数详解

ExpiresDefault和ExpiresByType指令同样能够用易懂的语法格式进行定义:
ExpiresDefault "<base> [plus] {<num><type>}"
ExpiresByType type/encoding "<base> [plus] {<num><type>}"

其中<base>是下列之一:
• access
• now (等价于'access')
• modification

[plus]关键字是可选的。

<num>必须是整数

<type>是下列之一:
• years
• months
• weeks
• days
• hours
• minutes
• seconds

例如:下列3个指令都表示文档默认的有效期是一个月

ExpiresDefault "access plus 1 month"
ExpiresDefault "access plus 4 weeks"
ExpiresDefault "access plus 30 days"

而且有效期可以通过增加"num"/"type"子句进一步调整

ExpiresByType text/html "access plus 1 month 15 days 2 hours"
ExpiresByType image/gif "modification plus 5 hours 3 minutes"

注意,如果你使用基于最后修改日期的设置,"Expires:"头将不会被添加到那些并非来自于磁盘文件的内容。这是因为这些内容并不存在"最后修改时间"的属性。

#GIF有效期为1个月(秒数)
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A604800
ExpiresByType text/plain A604800

#HTML文档的有效期是最后修改时刻后的一星期
ExpiresByType text/html M604800
</IfModule>

"M"表示源文件的最后修改时刻,"A"表示客户端对源文件的访问时刻。后面的时间则以秒计算。

3.保存退出,重启服务

[root@http ~]# systemctl restart httpd

禁止网站目录遍历

在http的终端上进行操作
将Options Indexes FollowSymLinks中的Indexes去掉,就可以禁止Apache显示该目录结构。
Indexes的作用就是当该目录下没有index.html文件时,就显示目录结构。

[root@http ~]# vim /usr/local/httpd/conf/httpd.conf
定位:Options Indexes FollowSymLinks 去除Indexes
[root@http ~]# systemctl restart httpd

Apache隐藏版本号

在http终端上操作
1.主配置文件启用httpd-default.conf

[root@http ~]# vim /usr/local/httpd/conf/httpd.conf
定位并去除"#"
Include conf/extra/httpd-default.conf

2.修改httpd-default.conf配置

[root@http ~]# vim /usr/local/httpd/conf/extra/httpd-default.conf
修改:
	ServerTokens Prod
	ServerSignature Off

3.重启httpd服务

[root@http ~]# systemctl restart httpd

如果你需要彻底将版本之类的信息进行改头换面,你就需要在编译之前做准备或者进行重新编译了。在重新编译时,修改源码包下include目录下的ap_release.h文件

#define AP_SERVER_BASEVENDOR "Apache Software Foundation" #服务的供应商名称
#define AP_SERVER_BASEPROJECT "Apache HTTP Server" #服务的项目名称
#define AP_SERVER_BASEPRODUCT "Apache" #服务的产品名
#define AP_SERVER_MAJORVERSION_NUMBER 2 #主要版本号
#define AP_SERVER_MINORVERSION_NUMBER 4 #小版本号
#define AP_SERVER_PATCHLEVEL_NUMBER 23 #补丁级别
#define AP_SERVER_DEVBUILD_BOOLEAN 0 #

上述列出的行,已经给出了注释,大家可以修改成自己想要的,然后编译安装之后,对方就彻底不知道你的版本号了。

配置httpd日志轮替切割

在http终端上操作Apache日志切割
随着网站的访问越来越大,WebServer产生的日志文件也会越来越大,如果不对日志进行分割,那么只能一次将大的日志(如Apache的日志)整个删除,这样也丢失了很多对网站比较宝贵的信息,因为这些日志可以用来进行访问分析、网络安全监察、网络运行状况监控等,因此管理好这些海量的日志对网站的意义是很大的。

1.禁止默认日志保存配置

[root@http ~]# vim /usr/local/httpd/conf/httpd.conf
定位并禁用:
#ErrorLog "logs/error_log"
#CustomLog "logs/access_log" common
添加的轮替策略:
ErrorLog "|/usr/local/httpd/bin/rotatelogs -l logs/error_%Y%m%d.log 86400"
CustomLog "|/usr/local/httpd/bin/rotatelogs -l logs/access_%Y%m%d.log 86400" combined
注:其中 86400 为轮转的时间单位为秒

2.重启httpd服务

[root@http ~]# systemctl restart httpd

验证:查看logs目录下的日志文件

[root@http ~]# ls /usr/local/httpd/logs
access_20200611.log   dummy-host2.example.com-access_log  error_20200612.log
access_20200612.log   dummy-host2.example.com-error_log   error_log
access_log            dummy-host.example.com-access_log   httpd.pid
benet.com-access_log  dummy-host.example.com-error_log
benet.com-error_log   error_20200611.log

由于apache自带的日志轮询工具rotatelogs,据说在进行日志切割时容易丢日志,因此我们通常使用cronolog进行日志轮询。

方法2、使用cronolog为每一天建立一个新的日志
步骤:安装 cronolog 程序
下载cronolog软件包

[root@http ~]# tar zxf cronolog-1.6.2.tar.gz 
[root@http ~]# cd cronolog-1.6.2/
[root@http cronolog-1.6.2]# ./configure && make && make install

主配置文件中的使用方法

ErrorLog "|/usr/local/sbin/cronolog logs/error-%Y%m%d.log"
CustomLog "|/usr/local/sbin/cronolog logs/access-%Y%m%d.log" combined

如果Apache中有多个虚拟主机,最好每个虚拟主机中放置一个这样的代码,并将日志文件名改成不同的名字。
扩展
1.这个保证了每天一个文件夹,文件夹下每个小时产生一个log

CustomLog "|/usr/local/sbin/cronolog logs /%Y%m%d/access_log.%H" combined

2.按天轮询(生产环境常见用法,推荐使用):

CustomLog "|/usr/local/sbin/cronolog logs/access_www_%Y%m%d.log" combined

3.按小时轮询(生产环境较常见用法):

CustomLog "|/usr/local/sbin/cronolog logs /access_www_ %Y%m%d%H.log" combined

注意:
1.这两个管道日志文件程序还有一点不同之处是使用cronolog时,如果日志是放在某个不存在的路径则会自动创建目录,而使用rotatelogs时不能自动创建;
2.系统日志及系统服务日志,由专门日志轮替配置服务管理
配置文件为:/etc/logrotate.conf

配置防盗链

在http终端上操作
有时你的网站莫名其妙的访问量变大,不要高兴的太早,有可能是被别人盗链了。举个例子:比如你搭了个discuz论坛,里面有些热点图片、视频;然后别人将他网站上访问
图片的地址重定向到你的discuz上,这样他的服务器就可以空闲出来了;也就是说别人访问他网站的图片视频,消耗的却是你服务器的资源;解决这个问题的方法是配置下防盗链,让外来的盗不了链。

方法1:Apache防盗链的第一种实现方法,可以用rewrite实现。
1.主配置文件启用rewrite模块

[root@http ~]# vim /usr/local/httpd/conf/httpd.conf
定位并去除"#"
LoadModule rewrite_module modules/mod_rewrite.so

2.打开虚拟主机配置文件

[root@http ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf<VirtualHost>内部添加:
 RewriteEngine On
 RewriteCond %{HTTP_REFERER} !^$
 RewriteCond %{HTTP_REFERER} !^http://benet.com/.*$ [NC]
 RewriteCond %{HTTP_REFERER} !^http://benet.com$ [NC]
 RewriteCond %{HTTP_REFERER} !^http://www.benet.com/.*$ [NC]
 RewriteCond %{HTTP_REFERER} !^http://www.benet.com$ [NC]
 RewriteRule . *\.(gif|jpg|swf)$http://www.benet.com/about/nolink.png[R,NC,L]

相关选项的解释

1.RewriteEngine On  #启用rewrite,要想rewrite起作用,必须要写上.
2.RewriteCond test-string condPattern  #写在RewriteRule之前,可以有一或N条,用于测试rewrite的匹配条件,具体怎么写,后面会详细说到。
3.RewriteRule Pattern Substitution  #规则
4.%{HTTP_REFERER}:服务器变量,HTTPReferer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,服务器借此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。
5.[NC]指的是不区分大小写,[R]强制重定向 redirect
6.字母L表示如果能匹配本条规则,那么本条规则是最后一条(Last),忽略之后的规则
注:
RewriteCond %{HTTP_REFERER} !^$ 
上面这一行意在允许空“HTTP_REFERER”的访问,即允许用户在浏览器地址栏中直接输入图片地址时图片文件的显示。
RewriteCond %{HTTP_REFERER} !benet\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !www\.benet\.com/.*$ [NC]
设置允许访问的HTTP来源,包括网站自身。
RewriteRule . *\.(gif|jpg|swf)$ http://www.benet.com/about/nolink.png [R,NC,L]
将不满足referer条件的访问重定向至nolink.png。nolink.png位于允许“盗链”的目录about中,要相当注意,不然,警告信息和图片将无法在对方网站上显示。
注意:测试时要清除济浏览器缓存.
防盗链配置的说明:
1.表示自己的信任站点。设置为:http://www.benet.com和http://benet.com
2.(gif|jpg|swf):要保护文件的扩展名(|分开)。以这些为扩展名的文件,必须通过信任的站点网址引用,才可以访问。
3.http://www.benet.com/about/nolink.png:定义被盗链时替代的图片,让所有盗链jpg、gif、swf等文件的网页,显示网页文档根目录下的about/nolink.png文件。注意:替换显示的图片不要放在设置防盗链的目录中,并且该图片文件体积越小越好。当然你也可以不设置替换图片,而是使用下面的语句即可:
RewriteRule .*\.(gif|jpg|png)$ - [F]
注:[F](强制URL为被禁止的forbidden),强制当前URL为被禁止的,即立即反馈一个HTTP响应代码403(被禁止的)

3.重启httpd服务

[root@http ~]# systemctl restart httpd

方法2:通过判断浏览器头信息来阻止某些请求,即利用SetEnvIfNoCase和access。这个方法可以通过阻止某些机器人或蜘蛛爬虫抓取你的网站来节省你的带宽流量。
语法:

SetEnvIfNoCase attribute regex [!]env-variable[=value] [[!]env-variable[=value]] ...
SetEnvIfNoCase 当满足某个条件时,为变量赋值,即根据客户端请求属性设置环境变量。

注:Referer:指明了请求当前资源原始资源的URL,使用referer是可以防盗链,然后在找到自己网站对应的配置的地方(如在主配置文件中或虚拟主机中),加入下列代码:

[root@http ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf
SetEnvIfNoCase Referer "^$" local_ref
SetEnvIfNoCase Referer"^http://www.benet.com/.*$" local_ref
SetEnvIfNoCase Referer"^http://benet.com/.*$"local_ref
<filesmatch"\.(mp3|mp4|zip|rar|jpg|gif|png)">
#2.4版本以下的:
方法1:
Order Deny,Allow 
Allow from env=local_ref 
Deny from all
方法2:
Order Allow,Deny 
Allow from env=local_ref

#2.4版本以上的方法如下:
Require all denied
Require env local_ref
</filesmatch>
php服务器安装xcache缓存

php的工作模式
php在lamp环境下共有三种工作模式:CGI模式、apache模块、FastCGI模式。CGI模式下运行 PHP,性能不是很好。作为apache的模块方式运行,相信大家都了解了。FastCGI的方式和apache模块的不同点在于:FastCGI方式PHP是一处独立的进程,所有PHP子进程都由PHP的一个叫作php-fpm的组件负责管理;而apache模块化方式运行的PHP,则是apache负责调用PHP完成工作。PHP的FastCGI方式性能要比apache模块化方式强很多,今天我们以FastCGI方式编译安装lamp为例。
FastCGI工作机制
首先客户端发起请求,请求分为2种,一种是静态请求它可以直接由Apache直接响应返回;另一种是动态的请求,如其中包含中php或者Perl这种脚本解释性语言,则由Apache服务器通过fastcgi协议调用php服务器执行并返回给Apache由Apache返回解释执行后的结果,如果这个过程中涉及到对数据的操作,此时php服务器还会通过mysql协议调用mysql服务器。

安装php加速软件Xcache
在php主机上完成下面的操作

1.上传或下载xcache安装包
上传xcache安装包到虚拟机或网上下载:
说明:
php 安装目录:/usr/local/php5.6
php.ini 配置文件路径:/etc/php.ini
php 网页根目录:/var/www/benet

[root@php ~]# wget http://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz

2.安装xcache

[root@php ~]# tar zxf xcache-3.2.0.tar.gz #解压
[root@php ~]# cd xcache-3.2.0/ #进入安装目录
[root@php xcache-3.2.0]# yum -y install autoconf
[root@php xcache-3.2.0]# /usr/local/php5.6/bin/phpize #用phpize生成configure配置文件
[root@php xcache-3.2.0]# ./configure --enable-xcache --enable-xcache-coverager --enable-xcache-optimizer --with-php-config=/usr/local/php5.6/bin/php-config #配置
[root@php xcache-3.2.0]# make && make install #编译、安装
安装完成之后,在extensions后面会出现一个路径,记住它,后面会用到。

3.创建xcache缓存文件并赋权

[root@php xcache-3.2.0]# touch /tmp/xcache
[root@php xcache-3.2.0]# chmod 777 /tmp/xcache 

4.复制xcache网站目录到php(192.168.229.141)和httpd(192.168.1.138)网站根目录下

[root@php xcache-3.2.0]# cp -r htdocs/ /var/www/benet/xcache
[root@php xcache-3.2.0]# scp -rp /var/www/benet/xcache/ root@192.168.229.138:/var/www/benet/

5.修改php配置文件,添加xcache参数,重启php-fpm

[root@php ~]# vim /etc/php.ini
添加到文件末尾:
[xcache-common]
extension = /usr/local/php5.6/lib/php/extensions/no-debug-zts-20131226/xcache.so  #把xcache.so前的路径换成上面需要记住的那个路径,make install的最后一行路径。
[xcache.admin]
xcache.admin.enable_auth = Off
[xcache]
xcache.shm_scheme ="mmap"
xcache.size=60M
xcache.count =1
xcache.slots =8K
xcache.ttl=0
xcache.gc_interval =0
xcache.var_size=64M
xcache.var_count =1
xcache.var_slots =8K
xcache.var_ttl=0
xcache.var_maxttl=0
xcache.var_gc_interval =300
xcache.test =Off
xcache.readonly_protection = Off
xcache.mmap_path ="/tmp/xcache"
xcache.coredump_directory =""
xcache.cacher =On
xcache.stat=On
xcache.optimizer =Off
[xcache.coverager]
xcache.coverager =On
xcache.coveragedump_directory =""

重启服务

[root@php ~]# systemctl restart php-fpm

6.访问httpd的xcache虚拟目录,验证(ab压力测试后)http://192.168.229.138/xcache
执行第一次压力测试:

[root@php ~]# ab -c 100 -n 1000 http://192.168.229.139/index.php

执行第二次压力测试

[root@php ~]# ab -c 100 -n 1000 http://192.168.229.139/index.php
ab压力测试介绍

压力测试
网站性能压力测试是服务器网站性能调优过程中必不可缺少的一环。只有让服务器处在高压情况下,才能真正体现出软件、硬件等各种设置不当所暴露出的问题。
性能测试工具目前最常见的有以下几种:ab、http_load、webbench、siege。今天我们专门来介绍ab。
ab是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS 等。
1)ab的原理
ab是apachebench命令的缩写。
ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。
ab命令对发出负载的计算机要求很低,它既不会占用很高CPU,也不会占用很多内存。但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也需要注意,否则一次上太多的负载。可能造成目标服务器资源耗完,严重时甚至导致死机。
2)ab的安装
ab的安装非常简单,如果是源码安装apache的话,那就更简单了。apache安装完毕后ab命令存放在apache安装目录的bin目录下。如下:

[root@http bin]# pwd
/usr/local/httpd/bin
[root@http bin]# ls
ab         checkgid   envvars-std   htdbm     httpd       rotatelogs
apachectl  dbmmanage  fcgistarter   htdigest  httxt2dbm
apxs       envvars    htcacheclean  htpasswd  logresolve

如果apache是通过yum的RPM包方式安装的话,ab命令默认存放在/usr/bin目录下。如下:

[root@http ~]# which ab

注意:如果不想安装apache但是又想使用ab命令的话,我们可以直接安装apache的工具包httpd-tools。如下:

[root@http ~]# yum -y install httpd-tools

查看ab是否安装成功,可以切换到上述目录下,使用ab –V命令进行检测。如下:

[root@http ~]# ab -V
ab: error while loading shared libraries: libssl.so.1.0.0: cannot 
open shared object file: No such file or directory

如果ab –V命令出错,可以输入下面的命令

[root@http ~]# export LD_LIBRARY_PATH="/usr/local/openssl/lib/"
[root@http ~]# ab -V
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

3)ab参数说明
有关ab命令的使用,我们可以通过帮助命令进行查看。如下:

[root@http ~]# ab --help

参数介绍:

-n:在测试会话中所执行的请求个数(即总请求数)。 
-c:一次产生的请求个数(即并发用户数)。

4)ab性能指标
在进行性能测试过程中有几个指标比较重要:
1、吞吐率(Requests per second)
服务器并发处理能力的量化描述,单位是reqs/s,指的是在某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
注意:吞吐率是基于并发用户数的。这句话代表了两个含义:
a、吞吐率和并发用户数相关
b、不同的并发用户数下,吞吐率一般是不同的
计算公式:总请求数/处理完成这些请求数所花费的时间,即Request per second=Complete requests/Time taken for tests
必须要说明的是,这个数值表示当前机器的整体性能,值越大越好。
2、并发连接数(The number of concurrent connections)
并发连接数指的是某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。
3、并发用户数(Concurrency Level)
要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。
4、用户平均请求等待时间(Time per request)
计算公式:处理完成所有请求数所花费的时间/(总请求数/并发用户数),即:Time per request=Time taken for tests/(Complete requests/Concurrency Level)
5、服务器平均请求等待时间(Time per request:across all concurrent requests)
计算公式:处理完成所有请求数所花费的时间/总请求数,即:Time taken for/testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也等于用户平均请求等待时间/并发用户数,即Time per request/Concurrency Level。

没有账号? 忘记密码?

社交账号快速登录