2025年2月21日 星期五 甲辰(龙)年 腊月廿一 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 服务器 > Nginx

nginx性能优化_压测

时间:11-21来源:作者:点击数:23
CDSY,CDSY.XYZ

1、性能优化考虑点

  • a)当前系统结构瓶颈
  • 观察指标(top命令)、压力测试
  • b)了解业务模式
  • 接口业务类型、系统层次化结构
  • c)性能与安全

2、压测工具ab接口测试

ab不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。

ab是一个httpd自带的很好用的压力测试工具,ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。

可以用来测试apache的负载压力,也可以用来测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力负载性能。

 

1、安装ab

yum install httpd-tools

2、使用

Usage: ab [options] [http[s]://]hostname[:port]/path ,比如ab -n 2000 -c http://127.0.0.1/

-n 要执行请求数,默认会执行一个请求

-c 一次执行多个请求的数量,默认是一次一个请求。

-t 用于基准测试的最大秒数,使用它在固定的总时间内对服务器进行基准测试。默认情况下,没有时间限制。

-s 超时之前等待的最大秒数。 默认值是30秒。

-b TCP发送/接收缓冲区的大小,以字节为单位。

-B 进行传出连接时要绑定的地址。

-p 包含数据到POST的文件。 文件格式为gid=2&status=1,配合-T使用

-u 包含PUT数据的文件。 还请记住设置-T 。

-T Content-type用于POST / PUT数据的内容类型内容类型标题,例如:'application/x-www-form-urlencoded' 默认是'text/plain'

-v verbosity 要打印多少个疑难解答信息,设置详细级别 - 4和以上打印标题信息,3和以上打印响应代码(404,200等),2和以上打印警告和信息。

-w 在HTML表格中打印结果。

-i 使用HEAD代替GET。

-x 用作<table>的属性的字符串。 属性被插入<table here>。

-y 用作<tr>的属性的字符串。

-z 用作<td>的属性的字符串。

-C 将cookie添加到请求。 参数通常采用名称=值对的形式。 这个字段是可重复的。

-H attribute 例如 ‘Accept-Encoding: gzip’ 插入所有普通标题行之后。(重复)

-A 添加基本的WWW认证,该属性是一个冒号分隔的用户名和密码,auth-username:password

-P 添加基本代理验证,属性是一个冒号分隔的用户名和密码,proxy-auth-username:password

-X 使用代理服务器和端口号。

-V 打印版本号并退出。

-k 使用HTTP KeepAlive功能。

-d 不要显示百分点服务表。

-S 不要显示信心估计和警告。

-q 做超过150个请求时不要显示进度。

-g 将收集的数据输出到gnuplot格式文件。

-e 输出提供百分比的CSV文件。

-r 不要退出套接字接收错误。

-h 显示使用情况信息(此消息)。

-Z 密码套件指定SSL / TLS密码套件(请参阅openssl密码)

-f 指定SSL / TLS协议 (SSL3, TLS1, TLS1.1, TLS1.2 or ALL)

样例:

  • GET请求
  • [root@zq conf.d]# ab -n2000 -c 4 https://10.21.144.110/44demo/
  • This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
  • Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  • Licensed to The Apache Software Foundation, http://www.apache.org/
  • Benchmarking 10.21.144.110 (be patient)
  • Completed 200 requests
  • Completed 400 requests
  • Completed 600 requests
  • Completed 800 requests
  • Completed 1000 requests
  • Completed 1200 requests
  • Completed 1400 requests
  • Completed 1600 requests
  • Completed 1800 requests
  • Completed 2000 requests
  • Finished 2000 requests
  • Server Software: diserver ##被测试服务器软件名称
  • Server Hostname: 10.21.144.110 #服务器主机名
  • Server Port: 443 #服务器端口
  • SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
  • Document Path: /44demo/ #请求的URL中的路径
  • Document Length: 157 bytes #页面的大小
  • Concurrency Level: 4 #并发数
  • Time taken for tests: 2.113 seconds #请求总耗时
  • Complete requests: 2000 #总共完成的请求数量
  • Failed requests: 0 #失败数
  • Write errors: 0
  • Non-2xx responses: 2000
  • Total transferred: 692000 bytes #测试过程中产生的网络传输总量
  • HTML transferred: 314000 bytes #测试过程中产生的HTML传输量
  • Requests per second: 946.67 [#/sec] (mean) #表示服务器吞吐量,每秒发多少个请求,总请求数/请求总耗时,2000/2.113
  • Time per request: 4.225 [ms] (mean) #客户端访问服务端,单个请求所耗时间
  • Time per request: 1.056 [ms] (mean, across all concurrent requests)#单个请求在服务端处理的耗时
  • Transfer rate: 319.87 [Kbytes/sec] received #传输速率,可以帮助排除是否存在网络流量过大导致响应时间延长的问题
  • Connection Times (ms)
  • min mean[+/-sd] median max
  • Connect: 2 4 0.8 4 12 #socket链路建立消耗,代表网络状况好
  • Processing: 0 0 0.4 0 6 #写入缓冲区消耗+链路消耗+服务器消耗
  • Waiting: 0 0 0.4 0 6 #写入缓冲区消耗+链路消耗+服务器消耗+读取数据消耗
  • Total: 2 4 0.9 4 12
  • Percentage of the requests served within a certain time (ms)
  • 50% 4
  • 66% 4
  • 75% 4
  • 80% 5
  • 90% 5
  • 95% 6
  • 98% 7
  • 99% 8
  • 100% 12 (longest request)
  • POST 请求
  • [root@zq conf.d]# cat /home/testzq/post.txt
  • vendor=""&application=""&firsttime="1576157443"&lasttime="1576157543"&sortedby=2&reversed=0&skip=1&count=10
  • [root@zq conf.d]# ab -n 100 -c 2 -p "/home/testzq/post.txt" -T application/json -C "username=admin; role=admin; auth_tkt=5928ba64a4eae02ba17c8a0ee6f0f924477c2f2f4b6855446a6425b4e26498a86dc8b81122fd3f8f3fced95a7858965085f3e23ef4486c1265d765f551cb33be5e35462bYWRtaW4%3D; timestamp=1580549678454" -H Referer:https://10.21.144.110:8443/ https://10.21.144.110:8443/inventory/software/applications
  • This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
  • Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  • Licensed to The Apache Software Foundation, http://www.apache.org/
  • Benchmarking 10.21.144.110 (be patient).....done
  • Server Software: diserver
  • Server Hostname: 10.21.144.110
  • Server Port: 8443
  • SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
  • Document Path: /inventory/software/applications
  • Document Length: 7095 bytes
  • Concurrency Level: 2
  • Time taken for tests: 0.303 seconds
  • Complete requests: 100
  • Failed requests: 0
  • Write errors: 0
  • Non-2xx responses: 100
  • Total transferred: 726000 bytes
  • Total body sent: 53500
  • HTML transferred: 709500 bytes
  • Requests per second: 329.97 [#/sec] (mean)
  • Time per request: 6.061 [ms] (mean)
  • Time per request: 3.031 [ms] (mean, across all concurrent requests)
  • Transfer rate: 2339.47 [Kbytes/sec] received
  • 172.40 kb/s sent
  • 2511.86 kb/s total
  • Connection Times (ms)
  • min mean[+/-sd] median max
  • Connect: 2 3 0.4 2 4
  • Processing: 2 3 1.2 3 7
  • Waiting: 2 3 1.2 3 6
  • Total: 4 6 1.3 6 10
  • ERROR: The median and mean for the initial connection time are more than twice the standard
  • deviation apart. These results are NOT reliable.
  • Percentage of the requests served within a certain time (ms)
  • 50% 6
  • 66% 7
  • 75% 7
  • 80% 7
  • 90% 8
  • 95% 8
  • 98% 9
  • 99% 10
  • 100% 10 (longest request)

3、注意点

1. 压力测试工作应该放到产品上线之前,而不是上线以后

2. 测试时尽量跨公网进行,而不是内网

3. 测试时并发应当由小逐渐加大,比如并发100时观察一下网站负载是多少、打开是否流程,并发200时又是多少、网站打开缓慢时并发是多少、网站打不开时并发又是多少

4. 应尽量进行单元测试

CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐