nginx响应或采样时间vs延迟与使用jmeter的连接时间

时间:2015-10-07 13:27:03

标签: ubuntu networking nginx latency response-time

我有一个非常好的nginx配置,我试图在10秒内测试 1000个请求的负载,以便通过https连接从nginx加载index.html页面。 对于所有1000个样本,延迟和连接时间是一致的。但是前几个样本的响应时间是可以的,但对于剩下的样本来说真的非常糟糕。我正在附上样本。请看第一个截图。您可以看到条目是一致的。 但是在第二个屏幕截图中,您可以发现响应时间越来越大这可能是什么原因?????

  • 是因为硬件端口限制(32000 - 61000)吗?但 对于虚拟托管计算机,我不允许编辑它。

  • 虚拟托管计算机是否有任何文件描述符开放限制? 你可以看到我设置ulimit -a和-n大约为200000. Will 这项工作适用于虚拟机吗?

  • 我是否必须在nginx配置中进行调整才能进行调整 响应时间一致吗?

  • 我正在尝试这个HTTPS连接,是不是每个都是b / c 连接花费时间在加密和系统忙于CPU 周期?我只想了解问题是否存在 硬件/软件水平?

我的硬件是虚拟托管的。以下是配置

  • 架构:x86_64
  • CPU op-mode(s):32位,64位
  • 字节顺序:Little Endian
  • CPU:16
  • 供应商ID:GenuineIntel
  • CPU系列:6
  • 型号:26
  • 步进:5
  • CPU MHz:2266.802
  • BogoMIPS:4533.60
  • 虚拟化:VT-x

这是nginx配置:

server {
    listen      80;
    server_name xxxx;

    # Strict Transport Security
    add_header Strict-Transport-Security max-age=2592000;
    rewrite ^/.*$ https://$host$request_uri? permanent;
}

server {
    listen 443 ssl;
    server_name xxxx;

    location / {     
    try_files $uri $uri/ @backend;  
    }   

    ## default location ##
    location @backend {
    proxy_buffering off;
    proxy_pass    http://glassfish_servers;

    proxy_http_version 1.1;
    proxy_set_header Connection "";

    # force timeouts if the backend dies
    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
    #proxy_redirect off;

    # set headers
    proxy_set_header    Host            $host;
    proxy_set_header    X-Real-IP       $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto https;
    }

    ssl_certificate /etc/nginx/ssl/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/xxxx.key;

    ssl_session_cache shared:SSL:20m;
    ssl_session_timeout 10m;

    ssl_prefer_server_ciphers       on;
    ssl_protocols                   TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers                     ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS;                   

}

enter image description here

enter image description here

这是我收集的汇总报告:

enter image description here

1 个答案:

答案 0 :(得分:1)

也许这不是nginx问题。根据您配置JMeter的方式,负载可能远高于您的预期。

我建议如下:因为每10秒1000个请求是100个请求/秒,

  1. 使用

    添加线程组
    • 主题:~300
    • 加速:30
    • 循环计数:永远
    • 计划程序 - >持续时间 - >即240秒
  2. 添加HTTP请求以锤击index.html
  3. 添加Constant Throughput Timer以将负载限制为100个请求/秒 - 每分钟6000个请求
  4. 为JMeter提供足够的Java HEAP空间 - 根据您的操作系统,在jmeterjmeter.bat文件中找到以下行:

    HEAP="-Xms512m -Xmx512m"
    

    并将值调整为以50%开始,以物理RAM总量的80%结束

  5. 运行JMeter in non-GUI mode,禁用所有侦听器,如:

    jmeter -n -t /path/to/your/testplan.jmx -l /path/to/testresults.jtl
    
  6. 一旦测试完成,打开JMeter GUI,添加您选择的监听器(Aggregate Report非常好)并分析结果
  7. 您还可以查看JMeter Plugins项目,它提供ie PerfMon Metrics Collector,这样您就可以在负载测试期间监控服务器运行状况,并使用多个扩展图表来显示您的测试或Taurus,它是JMeter和其他负载测试工具的包装器,可简化配置和执行过程,并使结果分析更容易。