ubuntu - nginx响应或采样时间vs延迟vs连接时间与jmeter

标签 ubuntu networking nginx latency response-time

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

  • 是因为硬件端口限制(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;                   
    
    }
    

    enter image description here

    enter image description here

    这是我收集的汇总报告:

    enter image description here

    最佳答案

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

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

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

    并调整值以从 50% 开始,以总物理 RAM 的 80% 结束
  • 运行 JMeter in non-GUI mode禁用所有监听器,例如:
    jmeter -n -t /path/to/your/testplan.jmx -l /path/to/testresults.jtl
    
  • 测试完成后打开 JMeter GUI,添加您选择的监听器(Aggregate Report 非常好)并分析结果

  • 您也可以查看 JMeter Plugins项目,它提供即 PerfMon Metrics Collector因此您将能够在负载测试期间监控您的服务器运行状况,并使用一些扩展图表来可视化您的测试或Taurus它是 JMeter 和其他负载测试工具的包装器,可简化配置和执行过程,并使结果分析更容易。

    关于ubuntu - nginx响应或采样时间vs延迟vs连接时间与jmeter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32993484/

    相关文章:

    java - 从生物识别指纹考勤设备中检索数据

    python - 如何修复此错误 googleApp 引擎错误 10054

    c - 用 C 代码从 IPV4 迁移到 IPV6

    nginx 中应用程序的 SSL

    qt - PyQt5 QSystemTrayIcon 在实际托盘之外

    linux - Bosh init 在通过脚本创建 bosh VM 时在 openstack 上出错

    c++ - 错误系统:9:错误的文件描述符 (BOOST::FileSystem)

    c - 如何用C语言API控制gnome终端的帧大小、缓冲区大小、光标位置和GDI功能?

    php - 无法将 https 站点重定向到另一个 url - nginx 服务器 block

    NGINX 多次崩溃