haproxy 中的超时

客户端请求阶段

  1. timeout client

    1. haproxy 和客户端通信时,连接不活跃的时间,既不发送数据,也不ack接收的数据
    2. 如果未设置,则永不超时,此时连接是否超时依赖于tcp连接本身的机制
  2. timeout http-request
    1. tcp 连接建立后,直到所有头部发送完毕的时间
    2. 如果未设置,则使用 timeout client 的值
    3. 如果 frontend 是 tcp 模式,则使用 backend 中的 timeout http-request
  3. timeout http-keep-alive
    1. 当开启 option http-keep-alive 时,haproxy 处理完请求 A ,等待连接上请求 B ,请求 A 结束到请求 B 开始之间的间隔时间
    2. 如果未设置,则使用 timeout client
    3. 如果 frontend 是 tcp 模式,则使用 backend 中的 timeout http-keep-alive
  4. timeout client-fin
    1. 当客户端和 haproxy 的连接的一端已经 shutdown 时,该连接不活跃的时间
    2. 如果未设置
      1. 非隧道连接,使用 timeout client
      2. 隧道连接,如 RDB/WebSocket ,使用 timeout tunnel

haproxy 转发阶段

  1. timeout queue

    1. 当 haproxy 接受客户端请求后,如果暂时找不到可以立即转发的后端,此时会将该连接放置在 backend 或者 server 的请求队列中,等待有 server 可以处理请求时,就转发过去
    2. timeout queue 指定的是,某个请求被放置在队列中的最大时间,如果超时,则认为该请求不能被处理,返回 503 给客户端
    3. 如果未设置,则使用 timeout connect
  2. timeout connect
    1. haproxy 和后端建立 tcp 连接的超时时间
    2. 如果未设置则永不超时

后端响应阶段

  1. timeout server

    1. haproxy和后端通信时,连接不活跃的时间,即既不发送数据,也不 ack 接收的数据
  2. timeout server-fin
    1. 当 haproxy 和后端的连接的一端已经 shutdown 时,该连接不活跃的时间
    2. 如果未设置
      1. 非隧道连接,使用 timeout server
      2. 隧道连接,使用 timeout tunnel

特殊场景

  1. timeout tunnel

    1. 隧道连接的场景

      1. http 连接升级后 WebSocket 之后
      2. 转发 CONNECT 请求 给http 代理
      3. tcp 连接
    2. 隧道连接建立后,该连接双向不活跃的时间,即连接上既不发送数据,也不接收数据
    3. 当连接转换为隧道连接后,timeout client/timeout server 都将被 timoeut tunnel 取代
  2. timeout tarpit

    1. 当 http 请求被 http-request tarpit 指令标记后,haproxy 会将连接维持 timeout tarpit 的时间,如果超时后,该连接仍然未关闭,就回复 500 响应码给客户端,参看 http-request tarpit 的说明

最新文章

  1. 分享:使用 TypeScript 编写的 JavaScript 游戏代码
  2. Material Design 概念,环境和基本属性
  3. 安卓app中嵌入一个H5页面,当手机系统设置字体变大时,如何使H5页面的字体不会随用户自己调整的系统字体变化而变化?
  4. jsp放在web-inf下的注意事项
  5. Redis Key 命令
  6. JQ将数组转换为Json
  7. mysql 存储过程 demo
  8. LintCode "Triangle Count"
  9. HDU4836 The Query on the Tree(树状数组&&LCA)
  10. HTTP 请求方式: GET和POST的比较
  11. 【译】Android系统简介
  12. Redis hash数据类型操作
  13. android学习小例子——验证码倒计时按钮
  14. mysql主从同步(3)-percona-toolkit工具(数据一致性监测、延迟监控)使用梳理
  15. idea连接服务器上传jar并运行
  16. MyExceptionFilter 异常注入
  17. HDU5470 Typewriter SAM 动态规划 单调队列
  18. python简述
  19. 复习python
  20. Android中简单活动窗口的切换--Android

热门文章

  1. 扩展Linux网络栈
  2. [BJDCTF2020]Cookie is so stable && [GWCTF 2019]枯燥的抽奖
  3. 当你在浏览器输入一个网址(如http://www.taobao.com),按回车之后发生了什么?
  4. 基于jaccard相似度的LSH
  5. React Native学习记录
  6. Unity 黑暗之光 笔记 第三章
  7. selenium 浏览器的操作
  8. 浅谈 FHQ-Treap
  9. Java篇:Docker的介绍安装 和常用命令
  10. 解决Windows2019登录黑屏问题