小风儿 发表于 2018-11-11 07:35:23

Nginx高并发设置跟压测

Nginx高并发设置跟压测  

  环境:
  Centos6.5nginx1.14.0
  安装
  Nginx    压测工具ab
  步骤:
  Nginx安装部署网站步骤略,绑定域名www.langba888.com192.168.137.49测试
  ab:yum install httpd-tools
  ab-V 看看显示版本
  Nginx limit模块限制并发数设置
  如何Nginx限制同一个ip的连接数,限制并发数目:
  1.添加limit_zone和limit_req_zone 这个变量只能在http使用 :
  vim /etc/nginx/nginx.conf
  limit_conn_zone $binary_remote_addr zone=one:20m;
  limit_req_zone $binary_remote_addr zone=req_one:20m rate=12r/s;
  2.添加limit_conn 和limit_req 这个变量可以在http, server, location使用 我是限制nginx上的所有服务,所以添加到http里面 (如果你需要限制部分服务,可在nginx/conf/domains里面选择相应的server或者location添加上便可)
  vi /etc/nginx/nginx.conf
  limit_conn_zone $binary_remote_addr zone=one:20m;
  limit_req_zone $binary_remote_addr zone=req_one:20m rate=12r/s;
  limit_conn   one 10;
  limit_req   zone=req_one burst=120;
  参数详解(数值按具体需要和服务器承载能力设置,):
  limit_zone,是针对每个变量(这里指IP,即$binary_remote_addr)定义一个存储session状态的容器。这个示例中定义了一个20m的容器,按照32bytes/session,可以处理640000个session。
  limit_req_zone 与limit_conn_zone类似。rate是请求频率. 每秒允许12个请求。
  limit_connone 10 : 表示一个IP能发起10个并发连接数
  limit_req: 与limit_req_zone对应。burst表示缓存住的请求数。
  范例:
  # cat /etc/nginx/nginx.conf
  usernginx;
  worker_processesauto;
  error_log/var/log/nginx/error.log warn;
  pid      /var/run/nginx.pid;
  events {
  useepoll;
  worker_connections1024;
  accept_mutex off;
  }
  http {
  limit_conn_zone $binary_remote_addr zone=one:20m;
  limit_req_zone $binary_remote_addr zone=req_one:20m rate=12r/s;
  

limit_conn   one 10;  
limit_req   zone=req_one burst=120;
  

  
include       /etc/nginx/mime.types;
  
default_typeapplication/octet-stream;
  

  
log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '
  '$status $body_bytes_sent "$http_referer" '
  '"$http_user_agent" "$http_x_forwarded_for"';
  

  
access_log/var/log/nginx/access.logmain;
  

  
sendfile      on;
  
#tcp_nopush   on;
  

  
keepalive_timeout65;
  

  
#gzipon;
  

  
include /etc/nginx/conf.d/*.conf;
  

  }
  最后nginx-t 进行测试ok 就重启nginx
  /etc/init.d/nginx restart
  然后用ab进行测试
  # ab -c 100 -n 1000 http://www.langba888.com/
  This is ApacheBench, Version 2.3
  Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
  Licensed to The Apache Software Foundation, http://www.apache.org/
  Benchmarking lt.eg132.com (be patient)
  Completed 100 requests
  Completed 200 requests
  Completed 300 requests
  Completed 400 requests
  Completed 500 requests
  Completed 600 requests
  Completed 700 requests
  Completed 800 requests
  Completed 900 requests
  Completed 1000 requests
  Finished 1000 requests
  Server Software:      nginx/1.14.0
  Server Hostname:      www.langba888.com
  Server Port:            80
  Document Path:          /
  Document Length:      169 bytes
  Concurrency Level:      100
  Time taken for tests:   83.256 seconds
  Complete requests:      1000
  Failed requests:      0
  Write errors:         0
  Non-2xx responses:      1000
  Total transferred:      319000 bytes
  HTML transferred:       169000 bytes
  Requests per second:    12.01 [#/sec] (mean)
  Time per request:       8325.609 (mean)
  Time per request:       83.256 (mean, across all concurrent requests)
  Transfer rate:          3.74 received
  Connection Times (ms)
  minmean[+/-sd] median   max
  Connect:      0    2   7.0      0      31
  Processing:    31 7909 1482.9   8333    8336
  Waiting:      0 7909 1483.0   8333    8336
  Total:         32 7911 1476.3   8333    8336
  Percentage of the requests served within a certain time (ms)
  50%   8333
  66%   8334
  75%   8334
  80%   8334
  90%   8334
  95%   8335
  98%   8335
  99%   8335
  100%   8336 (longest request)
  ab的参数详细解释
  普通的测试,使用-c -n参数配合就可以完成任务
  格式: ./ab hostname[:port]/path
  参数:
  -n 测试的总请求数。默认时,仅执行一个请求
  -c 一次并发请求个数。默认是一次一个。
  对于返回结果的参数说明:
  Server Software:           //Web服务器引擎
  Server Hostname:         //服务器地址
  Server Port:                 //服务器端口
  Document Path:           //请求的文件路径
  Document Length:       //文件大小
  Concurrency Level:       //并发次数
  Time taken for tests:    //测试所需时间
  Complete requests:      //成功请求次数
  Failed requests:           //失败请求次数
  (Connect: 0, Length: 73, Exceptions: 0)
  Write errors:               //写入错误
  Keep-Alive requests:    
  Total transferred:        //测试过程传输字节数
  HTML transferred:       /HTML内容传输字节数
  Requests per second:   //每秒请求数 ( 平均 )
  Time per request:        //每次并发请求时间 ( 所有并发 )
  Time per request:        //每一请求时间 ( 并发平均 )
  Transfer rate:              //平均传输速率


页: [1]
查看完整版本: Nginx高并发设置跟压测