IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> nginx长连接与短连接性能对比 -> 正文阅读

[开发测试]nginx长连接与短连接性能对比

 上一篇文章搭建了plg日志监控,本次准备看下目前集群的性能。
	对应机器如下:虚机4,前一后三,4台配置均为4核4g
	物理机为20核32g台式机。

先进行原始nginx配置的压测 nginx配置如下:

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
	#配置nginx  json格式日志
    log_format  main  '{"@timestamp": "$time_local", '
                        '"remote_addr": "$remote_addr", '
                        '"referer": "$http_referer", '
                        '"request": "$request", '
                        '"status": $status, '
                        '"bytes": $body_bytes_sent, '
                        '"agent": "$http_user_agent", '
                        '"x_forwarded": "$http_x_forwarded_for", '
                        '"up_addr": "$upstream_addr",'
                        '"up_host": "$upstream_http_host",'
                        '"up_resp_time": "$upstream_response_time",'
                        '"request_time": "$request_time"'
                        ' }';

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

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    upstream test.miaohr.com {
	server 192.168.175.128:8070;
	server 192.168.175.129:8070;
	server 192.168.175.130:8070;
    }
    

    server {   
        listen       80;   
        server_name  test.miaohr.com;   
        charset utf-8;   
        location / {   
            root   html;   
            index  index.html index.htm;   
            proxy_pass        http://test.miaohr.com;   
            proxy_set_header  X-Real-IP  $remote_addr;   
            client_max_body_size  100m;
        }   
  
  
   
    }   
}

使用jmeter5.0进行压测,压测命令如下

jmeter -n -t  D:/testYc.jmx  -l D:/result.txt -e -o D:/webreport

其中
D:/testYc.jmx ------> 测试计划文件的路径
D:/result.txt ------> 将要生成的测试结果文件的存放路径
D:/webreport -------> 将要生成的web报告的保存路径
使用物理机cmd命令进行压测。线程为200,持续100s,报告如下
在这里插入图片描述
此时rt为180ms+,tps在980左右

修改nginx配置为长连接,长连接配置如下

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
	#配置nginx  json格式日志
    log_format  main  '{"@timestamp": "$time_local", '
                        '"remote_addr": "$remote_addr", '
                        '"referer": "$http_referer", '
                        '"request": "$request", '
                        '"status": $status, '
                        '"bytes": $body_bytes_sent, '
                        '"agent": "$http_user_agent", '
                        '"x_forwarded": "$http_x_forwarded_for", '
                        '"up_addr": "$upstream_addr",'
                        '"up_host": "$upstream_http_host",'
                        '"up_resp_time": "$upstream_response_time",'
                        '"request_time": "$request_time"'
                        ' }';

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

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    upstream test.miaohr.com {
	server 192.168.175.128:8070;
	server 192.168.175.129:8070;
	server 192.168.175.130:8070;
	keepalive 500;#最大空闲连接数
    }
    

    server {   
        listen       80;   
        server_name  test.miaohr.com;   
        charset utf-8;   
        location / {   
            root   html;   
            index  index.html index.htm;   
            proxy_pass        http://test.miaohr.com;   
            proxy_set_header  X-Real-IP  $remote_addr;   
            client_max_body_size  100m;
        }   
  
  
   
    } 

location / {
                proxy_pass http://test-api;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header REMOTE-HOST $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_http_version 1.1;              # 设置http版本为1.1
                proxy_set_header Connection "";      # 设置Connection为长连接(默认为no)
      }


}

进行第二次压测,报告如下
在这里插入图片描述

本次压测,rt降低到76ms,tps上升到2400+。对比短连接,集群的性能得到了很大的提升。但错误率指标有所上升。根据jmeter执行日志查看, 报错集中为以下内容

1650551535574,485,HTTP请求,Non HTTP response code: java.net.BindException,Non HTTP response message: Address already in use: connect,线程组 1-135,text,false,,2437,0,200,200,http://192.168.175.131/getSxbm,0,0,485

根据查阅后发现,这是由于压测机为windows系统,tcp端口资源来不及释放导致。与集群性能无关
在这里插入图片描述
长连接与短连接的区别,主要在于长连接模式下,不需要频繁的建立起tcp连接,同时也不需要频繁关闭,节省了这部分资源的消耗。这种情况下比较适合频繁请求的场景下。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:45:10  更:2022-04-24 09:45:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 2:26:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码