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

nginx response or sample time vs latency vs connect time with jmeter

我有一个非常好的 nginx 配置,我正在尝试在 10 秒内测试 1000 个请求的负载 以使用 https 连接从 nginx 加载 index.html 页面。 对于所有 1000 个样本,延迟和连接时间是一致的。但是前几个样本的响应时间还可以,但对于其余样本来说真的很糟糕。我附上样品。请看第一个截图。您可以看到条目是一致的。 但是在第二张截图中,你可以发现随着时间的推移响应时间越来越大这可能是什么原因?????

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

这是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;                   

}

这是我收集的汇总报告:

可能不是nginx的问题。根据您配置 JMeter 的方式,负载可能比您预期的要高得多。

我会推荐以下内容:因为每 10 秒 1000 个请求是 100 requests/second,

  1. 添加线程组

    • 线程:~300
    • 加速:30
    • 循环次数:永远
    • 调度程序 -> 持续时间 -> 即 240 秒
  2. 添加HTTP请求到锤子index.html
  3. 添加 Constant Throughput Timer 以将负载限制为每秒 100 个请求 - 将是每分钟 6000 个请求
  4. 提供足够的 JMeter Java HEAP space - 根据您的 OS 在 jmeterjmeter.bat 文件中找到以下行:

    HEAP="-Xms512m -Xmx512m"
    

    并将值调整为从总物理 RAM 的 50% 开始到 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 非常好)并分析结果

您还可以查看 JMeter Plugins project, it provides i.e. PerfMon Metrics Collector so you will be able to monitor your server health during the load test and a number of extended graphs to visualise your test or Taurus,它是 JMeter 和其他负载测试工具的包装器,可简化配置和执行过程,并使结果分析更容易。