linux的backlog设置

一、查看当前系统下所有连接状态的数
    netstat -n|awk '/^tcp/{++S[$NF]}END{for (key in S) print key,S[key]}'
    ESTABLISHED 38
    TIME_WAIT 1000
 
 
二、看下我系统上默认的SYN队列大小
    [root@log]# cat /proc/sys/net/ipv4/tcp_max_syn_backlog 
    262144
    定义SYN队列大小:
    echo 4096 > /proc/sys/net/ipv4/tcp_max_syn_backlog   --定义是php配置的两倍,大于php的就行
 
 
 
三、看下我系统上默认的TIME_WAIT队列大小
    cat /proc/sys/net/ipv4/tcp_max_tw_buckets
    1000
    定义TIME_WAIT的大小:
    echo 4096 > /proc/sys/net/ipv4/tcp_max_tw_buckets
 
 
四、修改backlog参数
    Kernel会为LISTEN状态的socket维护两个队列,一个是SYN RECEIVED状态,另一个是ESTABLISHED状态,而backlog就是这两个队列的大小之和。
    当前Linux版本使用上面说法,有两个队列:具有由系统范围设置指定的大小的SYN队列 和 应用程序(也就是backlog参数)指定的accept队列。
 
 
 
 
五、查看系统默认数量:
    cat /proc/sys/net/core/netdev_max_backlog
    定义队列的数据包的最大数目
    echo "4096"  > /proc/sys/net/core/netdev_max_backlog  #在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。
 
 
六、nginx 配置参数优化:
    有代理就设置在代理上:没有代理就直接设置在web应用上(或者两个都设置)
    upstream js_sdk {
            #ip_hash;
            server ******* weight=1 max_fails=3 fail_timeout=10s;
            server ******* weight=1 max_fails=3 fail_timeout=10s;
            keepalive 1000;
    }
    
    server {
        listen 80 default backlog=1024;
        listen 443 ssl default backlog=1024;
 
 
七、php优化:(-1  表示没有使用系统的 backlog )    
    vim /usr/local/php/etc/php-fpm.conf
   
    listen.backlog = 2048   #每一个端口最大的监听队列的长度,需要配置nginx配置文件使用,如下(暂时只更改这里)
 
 
   
   
八、linux内核参进行优化:
    vim /etc/sysctl.conf
    
     net.ipv4.tcp_syncookies = 1
     net.ipv4.tcp_max_syn_backlog = 4096  #对于还未获得对方确认的连接请求,可保存在队列中的最大数目。如果服务器经常出现过载,可以尝试增加这个数字。
     net.core.somaxconn = 4096   #定义了系统中每一个端口最大的监听队列的长度,这是个全局的参数。backlog需要设置这个
 
    使用命令使之生效:sysctl -p
 
 
 

你可能感兴趣的:(linux_C)