zoukankan      html  css  js  c++  java
  • nginx的so_keepalive和timeout相关小计

    KeepAlive

    这里的keepalive是TCP的探活机制:

    [root@ ~]# sysctl -a  |grep tcp_keepalive
    net.ipv4.tcp_keepalive_time = 1200
    net.ipv4.tcp_keepalive_probes = 9
    net.ipv4.tcp_keepalive_intvl = 75
    

    参数解释:

    • tcp_keepalive_time 1200 ,tcp建立链接后1200 秒如果无数据传输,则会发出探活数据包
    • tcp_keepalive_probes 9 , 共发送9次
    • tcp_keepalive_intvl 75 ,每次间隔75秒

    KeepAlive并不是默认开启的,在Linux系统上没有一个全局的选项去开启TCP的KeepAlive。需要开启KeepAlive的应用必须在TCP的socket中单独开启。

    TCP socket也有三个选项和内核对应,通过setsockopt系统调用针对单独的socket进行设置:

    • TCPKEEPCNT: 覆盖 tcpkeepaliveprobes
    • TCPKEEPIDLE: 覆盖 tcpkeepalivetime
    • TCPKEEPINTVL: 覆盖 tcpkeepalive_intvl

    Nginx

    server {
        listen 127.0.0.1:3306 so_keepalive=on;
        proxy_pass 172.17.0.3:3306;
        
        #建立连接时间
        proxy_connect_timeout 5s;
        #保持连接时间
        proxy_timeout 3600s;
        error_log /data/logs/my.log info;
    

    so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]

    • on: 开启,探测参数更加系统默认值
    • off: 关闭
    • keepidle: 等待时间
    • keepintvl: 发送探测报文间隔
    • keepcent: 探测报文发送次数

    proxy_timeout:建连后无数据时与后端服务器连接保持时间,默认75s。

    proxy_connect_timeout:与后端服务器建立连接的超时, 不超过75s。

    proxy_send_timeout:向后端服务器组发出write请求后,等待响应的超时间,默认为60秒。

    proxy_read_timeout:向后端服务器组发出read请求后,等待响应的超时间,默认为60秒。

  • 相关阅读:
    2. 两数相加
    1. 两数之和
    x-pack elasticsearch
    简单的文档
    PHP imagepng函数 问题
    Nginx 配置
    nginx内置变量
    TCP通信
    mysql 的一些操作
    ubuntu 软件包降级
  • 原文地址:https://www.cnblogs.com/wshenjin/p/11354123.html
Copyright © 2011-2022 走看看