User-Profile-Image
hankin
  • 5
  • centos7
  • docker
  • mysql
  • PostgreSQL
  • git/gitlab
  • ELK
  • python
    • python-Tornado
    • python-django
  • redis
  • nginx
  • kvm
  • proxmox
  • mongo
  • kubernetes
  • prometheus
  • GlusterFs
  • nfs
  • freeswitch
  • httpd
  • shell脚本
  • linux
  • fastdfs
  • nextcloud
  • openssl
  • openvpn
  • rabbitmq
  • sqlite
  • svn
  • java
  • ubuntu
  • vue2
  • wordpress
  • php
  • IOT物联网
  • 项目
  • 故障处理
  • 树莓派
  • 博客存档
  • 未分类
  • 杂项
  • #1742(无标题)
  • 新视野
  • 分类
    • 项目
    • 树莓派
    • 杂项
    • 未分类
    • 新视野
    • 故障处理
    • 博客存档
    • 交换机
    • wordpress
    • vue2
    • ubuntu
    • svn
    • sqlite
    • shell脚本
    • redis
    • rabbitmq
    • python-django
    • python
    • proxmox
    • prometheus
    • PostgreSQL
    • php
    • openvpn
    • openssl
    • nginx
    • nfs
    • nextcloud
    • mysql
    • mongo
    • linux
    • kvm
    • kubernetes
    • java
    • IOT物联网
    • httpd
    • GlusterFs
    • git/gitlab
    • freeswitch
    • fastdfs
    • ELK
    • docker
    • centos7
  • 页面
    • #1742(无标题)
  • 友链
      请到[后台->主题设置->友情链接]中设置。
Help?

Please contact us on our email for need any support

Support
    首页   ›   nginx   ›   正文
nginx

nginx监控测试调优

2022-11-07 23:39:59
1268  0 0

启用nginx 监控模块 ,实时查看nginx状态

安装(编译)
  ./configure --prefix=/usr/local/nginx_stat --with-http_stub_status_module
  make && make install
配置
  #编辑nginx.conf开启stub_status模块
  vi /usr/local/nginx/conf/nginx.conf
  server {

                  stub_status on;
                  allow 172.25.0.0/24;
                  access_log off;
                  deny all;
      }
  }
启动或重载Nginx服务
  /usr/local/nginx/sbin/nginx      
  /usr/local/nginx/sbin/nginx -s reload     
浏览器查看
。。。

ab压力测试

安装
  yum install httpd-tools -y                            
使用示例
  ab -n 100 -c 100 http://172.24.123.38/b1.txt                            
  ab -n 100 -c 100 http://47.108.196.131/b1.txt                           
   -n总的请求次数                           
   -c并发请求数                            
   -k是否开启长连接                          
详细参数
   -n    在测试会话中所执行的请求个数(总数)                                         
   -c    一次产生的请求个数(单次请求次数)                                          
   -t    测试所进行的最大秒数。其内部隐含值是-n 50000,它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。                                      
   -p    包含了需要POST的数据的文件。                                           
   -P    对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。                                       
   -T    POST数据所使用的Content-type头信息。                                       
   -v    设置显示信息的详细程度-4或更大值会显示头信息,3或更大值可以显示响应代码(404,200等),2或更大值可以显示警告和其他信息。                                          
   -V    显示版本号并退出。                                      
   -w    以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。                                           
   -i    执行HEAD请求,而不是GET。                                           
   -x   设置table属性的字符串。                                        
   -X   对请求使用代理服务器。                                     
   -y    设置tr属性的字符串。                                          
   -z    设置td属性的字符串。                                          
   -C   对请求附加一个Cookie:行。其典型形式是name=value的一个参数对,此参数可以重复。                                           
   -H    对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对(如,"Accept-Encoding:zip/zop;8bit")。                                          
   -A    对服务器提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即,是否发送了401认证需求代码),此字符串都会被发送。                                           
   -h    显示使用方法/帮助信息。                                         
   -d    不显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持)。                                          
   -e    产生一个以逗号分隔的(CSV)文件,其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。由于这种格式已经“二进制化”,所以比'gnuplot'格式更有用。                                      
   -g    把所有测试结果写入一个'gnuplot'或者TSV(以Tab分隔的)文件。此文件可以方便地导入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行为标题。                                          
   -i    执行HEAD请求,而不是GET。                                           
   -k    启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。默认时,不启用KeepAlive功能。                                       
   -q    如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此-q标记可以抑制这些信息。                                          
输出结果说明
  Server Software:              BWS/1.1                 ##服务器软件和版本
  Server Hostname:              www.baidu.co                  ##请求的地址/域名
  Server Port:                  80                ##端口

  Document Path:                /s                ##请求的路径      
  Document Length:              112435 bytes                  ##页面数据/返回的数据量

  Concurrency Level:            10                ##并发数
  Time taken for tests:         4.764 second                  ##共使用了多少时间 
  Complete requests:            10                ##请求数  
  Failed requests:              99                ##失败请求  
        错误详情  Connect: 0,                   #连接失败的次数
              Receive: 0,                   #接收数据失败的次数
              Length: 95,                   #接收到的数据长度跟第一次不一致的次数
                                Exceptions: 0                 #程序异常的次数

  Total transferred:            11342771 bytes                ##总共传输字节数,包含http的头信息等 
  HTML transferred:             11247622 bytes                ##html字节数,实际的页面传递字节数 
  Requests per second:          20.99 [#/sec] (mean)                ##每秒多少请求,这个是非常重要的参数数值,服务器的吞吐量 
  Time per request:             476.427 [ms] (mean)                 ##用户平均请求等待时间 
  Time per request:             47.643 [ms] (mean, across all concurrent requests)                ##服务器平均处理时间,也就是服务器吞吐量的倒数 
  Transfer rate:                2325.00 [Kbytes/sec] receive              ##每秒获取的数据长度

  Connection Times (ms)                                       
                min  mean[+/-sd] median   max                                   最小时间,平均值,中值,最大值
  Connect:       22   41  12.4     39      82                             ##连接时间
  Processing:   113  386 211.1    330    1246                             ##处理时间
  Waiting:       25   80  43.9     73     266                             ##等待时间  
  Total:        152  427 210.1    373    1283                             ##合计时间

  Percentage of the requests served within a certain time (ms)                                    
    50%    373                              ## 50%的请求在373ms内返回 
    66%    400                              ## 60%的请求在400ms内返回 
    75%    426                                    
在进行性能测试过程中有几个指标比较重要:
  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)                            
  要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。在HTTP/1.1下,IE7支持两个并发连接,IE8支持6个并发连接,FireFox3支持4个并发连接,所以相应的,我们的并发用户数就得除以这个基数                           

  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                    

高并发配置

系统配置
。。。
nginx配置
。。。
评论 (0)

点击这里取消回复。

欢迎您 游客  

Copyright © 2025 网站备案号 : 蜀ICP备2022017747号
smarty_hankin 主题. Designed by hankin
主页
页面
  • #1742(无标题)
博主
tang.show
tang.show 管理员
linux、centos、docker 、k8s、mysql等技术相关的总结文档
213 文章 2 评论 201580 浏览
测试
测试