xiaoyezihanghui 2019-11-05
服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
总请求数 / 处理完成这些请求数所花费的时间,即
Request per second = Complete requests / Time taken for tests
某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。
要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。
处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
Time per request = Time taken for tests /( Complete requests / Concurrency Level)
处理完成所有请求数所花费的时间 / 总请求数,即
Time taken for / testsComplete requests
可以看到,它是吞吐率的倒数。
同时,它也=用户平均请求等待时间/并发用户数,即
Time per request / Concurrency Level
Apache自带压力测试工具ab,简单易用,且可以模拟各种条件对Web服务器发起测试请求;
ab工具可以直接在Web服务器本地发起测试请求,这对于需要了解服务器的处理性能至关重要,因为它不包括数据的网络传输时间以及用户PC本地的计算时间,从而可以通过观测各种时间指标判断Web服务器的性能,以便进行参数的优化调整。
优化前先使用ab工具进行压力测试;
优化后,重启服务,再使用ab进行压力测试;
对比两次测试的结果,看优化效果是否明显;
ab [options] 网站网址
-n:总共的请求执行数 -c:并发数 -t:执行测试的总时间,单位是秒 -v:打印多少故障排除信息 -V:显示版本号并退出
(1)安装DNS服务的软件包bind。
[ ~]# yum install bind -y ......//省略安装过程 [ ~]#
(2)对DNS服务的主配置文件进行修改。
[ ~]# vim /etc/named.conf options { listen-on port 53 { any; }; //127.0.0.1改为any listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; //localhost改为any
(3)对DNS服务的区域配置文件进行修改。
[ ~]# vim /etc/named.rfc1912.zones zone "abc.com" IN { //添加一个域名信息 type master; file "abc.com.zone"; allow-update { none; }; };
(4)查看一下IP地址。
[ named]# ifconfig ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.52.133 netmask 255.255.255.0 broadcast 192.168.52.255 inet6 fe80::3e1d:31ba:f66a:6f80 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:27:1c:3f txqueuelen 1000 (Ethernet) RX packets 14532 bytes 20210558 (19.2 MiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 6054 bytes 399142 (389.7 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
(5)保留权限复制一份DNS服务的区域数据配置文件,进行修改。
[ ~]# cd /var/named/ //切换目录 [ named]# ls //查看 data dynamic named.ca named.empty named.localhost named.loopback slaves [ named]# cp -p named.localhost abc.com.zone //复制 [ named]# vim abc.com.zone $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 www IN A 192.168.52.133 //添加IPv4的域名解析
(6)开启named服务。
[ named]# systemctl start named //开启服务 [ named]# systemctl stop firewalld.service //关闭防火墙 [ named]# setenforce 0 //关闭增强性安全功能 [ named]#
(7)在宿主机将我们所需的工具包共享出去。
(8)通过Samba服务将工具包挂载到Linux系统。
[ ~]# smbclient -L //192.168.100.50/ //查看共享 Enter SAMBA\root‘s password: //匿名共享,没有密码,直接回车 OS=[Windows 10 Enterprise LTSC 2019 17763] Server=[Windows 10 Enterprise LTSC 2019 6.3] Sharename Type Comment --------- ---- ------- IPC$ IPC 远程 IPC share Disk tools Disk Users Disk Connection to 192.168.100.50 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND) NetBIOS over TCP disabled -- no workgroup available [ ~]# mkdir /mnt/tools //创建挂载目录 [ ~]# mount.cifs //192.168.100.50/tools /mnt/tools/ //挂载 Password for //192.168.100.50/tools: [ ~]# cd /mnt/tools/ //进入挂载目录 [ tools]# ls //查看 awstats-7.6.tar.gz extundelete-0.2.4.tar.bz2 forbid.png jdk-8u191-windows-x64.zip LAMP-C7 cronolog-1.6.2-14.el7.x86_64.rpm fiddler.exe intellijideahahau2018.rar john-1.8.0.tar.gz picture.jpg [ tools]#
(9)将源码编译安装Apache服务的压缩包解压到“/opt/”目录。
[ tools]# cd LAMP-C7/ //切换目录 [ LAMP-C7]# ls apr-1.6.2.tar.gz Discuz_X2.5_SC_UTF8.zip LAMP-php5.6.txt php-5.6.11.tar.bz2 apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 mysql-5.6.26.tar.gz [ LAMP-C7]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt/ //解压 ......//省略解压详情 [ LAMP-C7]# tar zxvf apr-1.6.2.tar.gz -C /opt/ //解压 ......//省略解压详情 [ LAMP-C7]# tar zxvf apr-util-1.6.0.tar.gz -C /opt/ //解压 ......//省略解压详情
(10)进入“/opt/”目录,将两个apr包移动到“httpd-2.4.29/srclib/”目录,并重命名。
[ LAMP-C7]# cd /opt/ [ opt]# ls apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh [ opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr [ opt]# mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util
(11)进入“httpd-2.4.29/”目录,然后安装编译所需环境包。
[ opt]# ls httpd-2.4.29 rh [ opt]# cd httpd-2.4.29/ [ httpd-2.4.29]# ls ABOUT_APACHE ap.d CHANGES docs httpd.spec libhttpd.dep Makefile.win README srclib acinclude.m4 build CMakeLists.txt emacs-style include libhttpd.dsp modules README.cmake support Apache-apr2.dsw BuildAll.dsp config.layout httpd.dep INSTALL libhttpd.mak NOTICE README.platforms test Apache.dsw BuildBin.dsp configure httpd.dsp InstallBin.dsp LICENSE NWGNUmakefile ROADMAP VERSIONING apache_probes.d buildconf configure.in httpd.mak LAYOUT Makefile.in os server [ httpd-2.4.29]# [ httpd-2.4.29]# yum -y install > gcc > gcc-c++ > make > pcre > pcre-devel > expat-devel > zlib-devel > perl ......//省略安装过程
(12)进行对Apache服务器的配置。
[ httpd-2.4.29]# ./configure > --prefix=/usr/local/httpd \ //安装路径 > --enable-so \ //启用动态加载模块支持 > --enable-rewrite \ //启用网页地址重写功能 > --enable-charset-lite \ //启用字符集支持 > --enable-cgi //启用CGI脚本程序支持
(13)编译安装Apache服务。
[ httpd-2.4.29]# make && make install ......//省略编译安装过程 [ httpd-2.4.29]#
(14)对Apache服务配置文件进行修改
[ httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf //创建软链接,方便使用 [ httpd-2.4.29]# Listen 192.168.50.133:80 //开启IPv4监听 #Listen 80 //注释IPv6监听 # ServerName www.abc.com:80 //设置域名
[ named]# ab -n 3000 -c 1000 www.abc.com/index.html This is ApacheBench, Version 2.3 <$Revision: 1807734 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking www.abc.com (be patient) Completed 300 requests Completed 600 requests Completed 900 requests Completed 1200 requests Completed 1500 requests Completed 1800 requests Completed 2100 requests Completed 2400 requests Completed 2700 requests Completed 3000 requests Finished 3000 requests Server Software: Apache/2.4.29 //http响应数据的头信息 Server Hostname: www.abc.com //请求的url中的主机名称 Server Port: 80 //web服务器软件的监听端口 Document Path: /index.html //请求的url根的绝对路径 Document Length: 45 bytes //http响应数据的正文长度 Concurrency Level: 1000 //并发的用户数 Time taken for tests: 21.061 seconds //所有这些请求被处理完成所花费的时间总和 Complete requests: 3000 //表示请求总数 Failed requests: 220 //失败的请求总数 (Connect: 0, Receive: 0, Length: 220, Exceptions: 0) Total transferred: 810356 bytes //请求的响应数据长度总数 HTML transferred: 126180 bytes Requests per second: 142.44 [#/sec] (mean) //服务器的吞吐率,每秒处理的请求总数 Time per request: 7020.414 [ms] (mean) //用户平均请求等待时间 Time per request: 7.020 [ms] (mean, across all concurrent requests) //每个请求实际运行时间的平均值 Transfer rate: 37.57 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 9 14.5 4 62 Processing: 9 1389 5135.1 27 21027 Waiting: 0 27 34.4 22 234 Total: 13 1398 5132.8 33 21027 Percentage of the requests served within a certain time (ms) //描述每个请求处理时间的分布情况。 50% 33 66% 37 75% 42 80% 55 90% 95 95% 21020 98% 21027 99% 21027 100% 21027 (longest request) [ named]#
参数 | 描述 |
---|---|
Server Software | http响应数据的头信息 |
Server Hostname | 请求的url中的主机名称 |
Server Port | web服务器软件的监听端口 |
Document Path | 请求的url根的绝对路径 |
Document Length | http响应数据的正文长度 |
Concurrency Level | 并发的用户数 |
Time taken for tests | 所有这些请求被处理完成所花费的时间总和 |
Complete requests | 表示总请求数 |
Failed requests | 失败的请求总数 |
Total transferred | 请求的响应数据长度总和 |
Requests per second | 服务器的吞吐率,每秒处理的请求数 |
Time per request | 用户平均请求等待时间 |
Time per request | 每个请求实际运行时间的平均值 |
Percentage of the requests served within a certain time (ms) | 描述每个请求处理时间的分布情况 |