Haproxy开启keep-alive配置

简介:

haproxy 1.5之后的版本支持5种连接方式


  - KAL : keep alive ("option http-keep-alive") which is the default mode : all

    requests and responses are processed, and connections remain open but idle

    between responses and new requests. 默认的保持连接方式


  - TUN: tunnel ("option http-tunnel") : this was the default mode for versions

    1.0 to 1.5-dev21 : only the first request and response are processed, and

    everything else is forwarded with no analysis at all. This mode should not

    be used as it creates lots of trouble with logging and HTTP processing. HTTP隧道方式


  - PCL: passive close ("option httpclose") : exactly the same as tunnel mode,

    but with "Connection: close" appended in both directions to try to make

    both ends close after the first request/response exchange. 关闭方式


  - SCL: server close ("option http-server-close") : the server-facing

    connection is closed after the end of the response is received, but the

    client-facing connection remains open. 服务端关闭方式


  - FCL: forced close ("option forceclose") : the connection is actively closed

    after the end of the response. 强制关闭方式


说下强制模式(option forceclose):

HTTP 1.1默认情况下是使用保持连接方式,只要启用了option httpclose,服务器就会向客户端发送Connection:close.但是某些浏览器不认这个http-header,依然会采用保持连接方式,这个时候服务器如果配置option forceclose就会自动在连接完成后进行关闭。


所以如果需要开启keep-alive就只需要配置

option http-keep-alive

option http-server-close

timeout http-keep-alive 10s

timeout client 30s

#option nolinger   #如果发现TIME_WAIT过多的时候开启这个参数可以及时清理一些TCP连接,但是也会出现“连接被重置”,慎用


关闭keep-alive

option httpclose

option forceclose

#option nolinger


对比Connection:close

wKiom1c9cm6RI9-FAADShB5wC_c943.png

从上面可以看到存在150的建立连接,每次连接都请求一次

网络层的时间达到6.425秒


Connection:keep-alive

wKiom1c9c0zjs7tNAADN6wCof2I905.png

wKiom1c9c86Bab0HAABhDkQXLf8979.png


使用保持连接方式只建立了34次请求(只用了close的五分之一),请求数量就不是存在多个,可以极大的减少建立连接的时间,减少网络开销,网络层的时间也只用了4.897秒


本文转自 rong341233 51CTO博客,原文链接:http://blog.51cto.com/fengwan/1775083


相关文章
|
存储 Kubernetes 应用服务中间件
k8s 1.24.3版本使用nfs-provisioner4.0.0动态创建PV
k8s 1.24.3版本使用nfs-provisioner4.0.0动态创建PV
3442 0
|
存储 Kubernetes NoSQL
【K8S系列】深入解析K8S存储
【K8S系列】深入解析K8S存储
1284 0
|
安全 jenkins 持续交付
Jenkins针对不同的项目视图对不同的用户进行权限分配
Jenkins创建用户并分配不同视图的权限 根据不同的部门分配不同的角色,角色成员只能看到自己部门视图内部的jenkins job Jenkins版本:2.249 因安装了中文包的原因,语言大多以中文的方式显示,但不影响配置使用
2894 0
Jenkins针对不同的项目视图对不同的用户进行权限分配
|
缓存 Linux 开发工具
CentOS 7- 配置阿里镜像源
阿里镜像官方地址http://mirrors.aliyun.com/ 1、点击官方提供的相应系统的帮助 :2、查看不同版本的系统操作: 下载源1、安装wget yum install -y wget2、下载CentOS 7的repo文件wget -O /etc/yum.
277182 0
|
Kubernetes 供应链 安全
云原生环境下的容器安全与最佳实践
云原生时代,容器与 Kubernetes 成为企业应用核心基础设施,但安全挑战日益突出。本文探讨容器安全现状与对策,涵盖镜像安全、运行时防护、编排系统风险及供应链安全,提出最小权限、漏洞扫描、网络控制等最佳实践,并结合阿里云 ACK、ACR 等服务提供全链路解决方案,展望零信任、AI 安全与 DevSecOps 融合趋势。
580 5
|
固态存储 关系型数据库 数据库
从Explain到执行:手把手优化PostgreSQL慢查询的5个关键步骤
本文深入探讨PostgreSQL查询优化的系统性方法,结合15年数据库优化经验,通过真实生产案例剖析慢查询问题。内容涵盖五大关键步骤:解读EXPLAIN计划、识别性能瓶颈、索引优化策略、查询重写与结构调整以及系统级优化配置。文章详细分析了慢查询对资源、硬件成本及业务的影响,并提供从诊断到根治的全流程解决方案。同时,介绍了索引类型选择、分区表设计、物化视图应用等高级技巧,帮助读者构建持续优化机制,显著提升数据库性能。最终总结出优化大师的思维框架,强调数据驱动决策与预防性优化文化,助力优雅设计取代复杂补救,实现数据库性能质的飞跃。
2149 0
|
SQL 关系型数据库 Java
聊聊 JDBC 的 executeBatch || 对比下不同数据库对 JDBC batch 的实现细节
聊聊 JDBC 的 executeBatch || 对比下不同数据库对 JDBC batch 的实现细节
|
存储 数据库 Docker
正确删除容器和镜像的方式
【10月更文挑战第24天】本文介绍了在Docker中如何正确删除容器和镜像,包括停止容器、删除已停止容器、删除未被使用的镜像以及注意事项,如数据备份、依赖关系检查和权限问题。其他容器管理工具的操作类似,但命令和语法可能不同。
4039 4
|
存储 缓存 前端开发
java后端实现token自动续期,这方案有点优雅
在前后端分离的开发模式下,前端用户登录成功后后端服务会给用户颁发一个token。前端(如vue)在接收到 token后会将token存储到LocalStorage中。
1192 0