nginx长连接与短连接性能对比分析

 更新时间:2025年12月22日 09:55:37   作者:秋分渔火  
文章对比了Nginx的长连接和短连接性能,通过JMeter进行压测,结果显示长连接模式下响应时间减少,TPS提升,但错误率上升,主要因Windows系统TCP端口资源释放延迟,长连接适用于频繁请求场景

​nginx长连接与短连接性能对比

本次准备看下目前集群的性能。    

  • 对应机器如下:虚机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连接,同时也不需要频繁关闭,节省了这部分资源的消耗。这种情况下比较适合频繁请求的场景下。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • nginx中的proxy_set_header参数指令详解

    nginx中的proxy_set_header参数指令详解

    本文介绍了Nginx中的proxy_set_header指令,用于自定义代理请求的HTTP头部信息,实现更灵活的反向代理功能,提供了实际应用场景和配置示例,帮助读者更好地理解和使用proxy_set_header指令,感兴趣的朋友一起看看吧
    2025-03-03
  • Nginx中CC攻击与DDoS防御的高级策略指南

    Nginx中CC攻击与DDoS防御的高级策略指南

    这篇文章主要为大家详细介绍了Nginx中CC攻击与DDoS防御的高级策略,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-07-07
  • Nginx配置文件详解

    Nginx配置文件详解

    Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。这篇文章主要介绍了Nginx配置详解,需要的朋友可以参考下
    2017-05-05
  • 使用Nginx Ingress 优雅显示错误页面

    使用Nginx Ingress 优雅显示错误页面

    这篇文章主要为大家介绍了使用Nginx Ingress 优雅显示错误页面实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • nginx代理转发配置小结

    nginx代理转发配置小结

    Nginx配置代理转发是常见需求,涉及编辑nginx.conf文件,添加location块并配置proxy_pass指令指向后端服务器,感兴趣的可以了解一下
    2024-10-10
  • Nginx设置HttpOnly Secure SameSite参数解决Cookie信息丢失

    Nginx设置HttpOnly Secure SameSite参数解决Cookie信息丢失

    本文主要介绍了Nginx中Cookie缺少SameSite属性的问题,并详细解释了HttpOnly、Secure和SameSite属性的作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • nginx正向代理与反向代理详解

    nginx正向代理与反向代理详解

    本文给大家分享的是nginx实现正向代理和反向代理的具体方法配置以及不同的实例情况,非常的详细,希望大家能够喜欢
    2020-03-03
  • Nginx部署负载均衡服务的步骤全解析

    Nginx部署负载均衡服务的步骤全解析

    为了提高系统的可扩展性和可靠性,负载均衡(Load Balancing)成为了必不可少的技术手段之一,本文将详细介绍如何通过Nginx部署负载均衡服务,感兴趣的可以了解下
    2025-06-06
  • nginx host绕过的三种方式

    nginx host绕过的三种方式

    本文主要介绍了nginx host绕过的三种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • 浅谈Nginx10m+高并发内核优化详解

    浅谈Nginx10m+高并发内核优化详解

    这篇文章主要介绍了浅谈Nginx10m+高并发内核优化详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03

最新评论