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秒。

  • 相关阅读:
    这个站不错
    Using YQL as crawler for Javascript
    xmldatabase domdatabase
    语法分析器自动生成工具一览
    Ruby, Concurrency, and You
    图书影印
    数据可视化我在寻找一款类似vfp或是access这样自带可视化风格的数据库或是键盘数据库
    金融工程
    joke
    在ubuntu上安装全文搜索中文分词Coreseek/sphinx及和Rails集成 转载
  • 原文地址:https://www.cnblogs.com/wshenjin/p/11354123.html
Copyright © 2011-2022 走看看