【问题标题】:nginx response or sample time vs latency vs connect time with jmeternginx响应或采样时间vs延迟vs连接时间与jmeter
【发布时间】:2015-10-07 13:27:02
【问题描述】:

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

  • 是不是因为硬件端口限制(32000 - 61000)?但 对于虚拟主机,我不能编辑它。

  • 虚拟主机是否有任何文件描述符打开限制? 可以看到我把 ulimit -a 和 -n 设置为 200000 左右。会 这适用于虚拟机吗?

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

  • 我正在尝试这个 HTTPS 连接,是不是因为每个 连接需要时间加密和系统忙于 cpu 周期?我只是想了解问题是否出在 硬件/软件级别?

我的硬件是虚拟主机。下面是配置

  • 架构:x86_64
  • CPU 操作模式:32 位、64 位
  • 字节顺序:小尾数
  • CPU:16
  • 供应商 ID:正版英特尔
  • CPU 系列:6
  • 型号:26
  • 步进:5
  • CPU 频率: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;                   

}

这是我收集的汇总报告:

【问题讨论】:

    标签: ubuntu networking nginx latency response-time


    【解决方案1】:

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

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

    1. 添加线程组
      • 线程数:~300
      • 加速:30
      • 循环计数:永远
      • 调度程序 -> 持续时间 -> 即 240 秒
    2. 将 HTTP 请求添加到hammer index.html
    3. 添加 Constant Throughput Timer 以将负载限制为 100 个请求/秒 - 将是每分钟 6000 个请求
    4. 为 JMeter 提供足够的 Java HEAP 空间 - 根据您的操作系统,在 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 项目,它提供即PerfMon Metrics Collector,因此您将能够在负载测试期间监控您的服务器运行状况以及一些扩展图表来可视化您的测试或Taurus是 JMeter 和其他负载测试工具的包装器,它简化了配置和执行过程,并使结果分析更容易。

    【讨论】:

    • 我正在尝试这个 Dmitri。我会检查这个并回复你
    • 平均为 0.5 秒,应该没问题。对于那些运行 15 秒的 - 你需要调查原因。
    • 延迟的原因是什么?
    猜你喜欢
    • 2013-09-01
    • 2020-12-06
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    • 2018-01-02
    • 1970-01-01
    • 2023-03-09
    • 2016-08-02
    相关资源
    最近更新 更多