Network调优

1、 NIC 网络介质卡
(1)、socket  套接字,连接进程的连通性
     具有两种模式:
        1、 基于文件的sock
        ls –l /tmp/mysql.sock 客户端和服务器端在同一个机器上,这种连接是非常高的。
        2、 基于网络的sock(五个元素)
        (1)、源IP 源端口 协议 目标IP 目标端口
        (2)、服务器端的端口和IP是固定的
        (3)、mysql使用的是tcp协议
        (4)、socket buffer 就是一块大内存
        (5)、core 是针对所有协议,IPV4是针对tcp协议的
        (6)、默认值以tcp为准,最大值以核心的为准
        (7)、tcp_mem 可以拿出多大的内存来存储sk_buffer,单位是页:4KB,32位系统最大支持:900M
        (8)、如果增大并发量,可以将tcp_mem的值加大,如果没有什么连接,调大则会浪费内存
        (9)、网络最优值=带宽*延时*1024*1024(基调网可以帮你测出来每个地区连接的延时)
        (10)、增大文件描述符,不建议主机上做防火墙
2、TCP状态对性能的影响
    (1)、当第三次握手成功后,进入established状态
    (2)、半开攻击,syn排队
    (3)、主动断开那端会进入Time_wait状态,被动那端会进入Close_wait
    (4)、established=最大连接数+somaxconn(排队人数)
    (5)、慢速攻击,本来一次可以发送完的数据,改变成多次发送并且时间间隔很长(最好的方法就是将apache换成nginx.php hash攻击)
3、监控网卡工具:安装yum install iptraf
                 命令 iptraf
                      mtr 远程IP
网络监控----cacti
        cactiez工作原理: 数据的采集,存储,分析,画图。
安装cactiez后请注意系统时间和当前时间是否一致(最好使用网络时间)

首先监控主机上安装net-snmp-utils
服务器端安装net-snmp

snmp:简单网络监控协议  port:161
cactiez数据路径: cd /var/www/html/rra
cactiez脚本路径: cd /var/www/html/scripts
log: /var/www/html/log
实验整理:
修改被监控主机的snmp的配置文件: 
vim /etc/snmp/snmpd.conf
rocommunity        public 192.168.18.0/24 #被监控的网段(也可以是单独的IP)
syslocation        China.beijing   #网页里显示的信息
syscontact         Root      [email protected]   #联系方式
主配文件留这三行就可以 其他的可以注释掉或删了
         在被监控主机上启动snmp服务:
service snmpd start
打开浏览器访问cactiez服务器的ip 就可以进行监控的设置了
snmpwalk -v 2c -c public 192.168.18.96 .1.3.6.1.4.1.2021.4.4.0
4、 配置文件
其实linux系统的TCP网络设置并不适用于大文件在广域网中传递,通常只是为了节省内存资源,可以通过调节linux的网络协议栈的缓冲区大小,
增加网络的高速网络连接的服务器系统,以处理更多的数据包。
(1)、linux系统默认tcp缓冲非常小,这个数值是根据系统内存计算出来的
        cat /proc/sys/net/ipv4/tcp_mem
(2)、默认和最大的系统套接字缓冲区(收取)
        cat /proc/sys/net/core/rmem_default
        cat /proc/sys/net/core/rmem_max
(3)、默认和最大的系统套接字缓冲区(发送) 
        cat /proc/sys/net/core/wmem_default
        cat /proc/sys/net/core/wmem_max
(4)、socket buffer 的最大初始化值
        cat /proc/sys/net/core/optmem_max

     调优1
         讲上文提到的收取和发送缓冲到12MB,系统套接字缓冲区的调整将会对所有协议有影响,也就是说以后tcp发送或者接收数据时的缓冲
         都用这个数值
         注:rmem_max和wmem_max的默认大小是128KB,在大多数情况下兵不需要修改,在web或者dns服务器中使用默认值也不错,当你感到
         有明显的延迟时便可以根据以下的参数修改,修改后会增大内存的开销
        (1)、增大系统套接字缓冲区
                echo ‘net.core.wmem_max = 12582912’ >> /etc/sysctl.conf     
echo ‘net.core.rmem_max = 12582912’ >> /etc/sysctl.conf
        (2)、增大tcp接收和发送缓冲区
                echo ‘net.ipv4.tcp_rmem = 10240 87380 12582912’ >> /etc/sysctl.conf
                echo ‘net.ipv4.tcp_wmem = 10240 87380 12582912’ >> /etc/sysctl.conf
        (3)、开启window scaling功能
                echo ‘net.ipv4.tcp_window_scaling = 1’ >> /etc/sysctl.conf
        (4)、时间戳在(请参考RFC 1323)tcp的包含增加12个字节
                echo ‘net.ipv4.tcp_timestamps = 1’ >> /etc/sysctl.conf
        (5)、启动有选择的应答
                echo ‘net.ipv4.tcp_sock = 1’ >> /etc/sysctl.conf
(6)、默认情况下一个tcp连接关闭后,把这个连接曾经有的参数比如慢启动门限snd_sthresh,拥塞窗口snd_cwnd,还有srtt等信息都保存到
dst_entry中,
只要dst_rntey没有失效,下次新建立相同连接的时候就可以使用保存的参数来初始化这个连接,通常是关闭的
    echo ‘net.ipv4.tcp_no_metrics_save = 1’ >> /etc/sysctl.conf
(7)、每个网络接口接收数据包的速率比内核处理这些包的速率时,允许送到队列的数据包的最大数目
    echo ‘net.core.netdev_max_backlog = 5000’ >> /etc/sysctl.conf
(8)、重新加载配置文件    sysctl –p
使用tcpdump看看修改后带来的变化   tcpdump -ni eth0

    调优2
    如下的网络配置参数调整,主要是针对请求压力大的linux(2.6 kernel)服务器而言,如果服务器压力不大,维持默认值即可
    (1)、 /proc/sys/net/core/wmem_max
           最大socket写buffer,可参考的优化值:873200
    (2)、 /proc/sys/net/core/rmem_max
           最大socket读buffer,可参考的优化值:873200
    (3)、 /proc/sys/net/ipv4/tcp_wmem
           Tcp写buffer,可参考的优化值:8192 436600 873200
    (4)、 /proc/sys/net/ipv4/tcp_rmem
           Tcp读buffer,可参考的优化值:32768 436600 873200
    (5)、 /proc/sys/net/ipv4/tcp_mem
           同样有3个值,意思是:
           net.ipv4.tcp_mem[0]:低于此值,tcp没有内存压力
           net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段
           net.ipv4.tcp_mem[2]:高于此值,tcp拒绝分配socket
           上述内存单位是页,页的大小是:4KB
           可参考的优化值:786432 1048576 1572864
    (6)、 /proc/sys/net/core/netdev_max_backlog
           进入包的最大设备队列,默认是300,对重负载服务器而言,该值太低,可调整到1000
    (7)、 /proc/sys/net/core/somaxconn
Listen()的默认参数,挂起请求的最大数量,默认是128,对繁忙的服务器,增加该值有助于网络性能,可调整到256
    (8)、 /proc/sys/net/core/optmem_max
           socket buffer 的最大初始值,默认是10K
    (9)、 /proc/sys/net/ipv4/tcp_max_syn_backlog
           进入syn包的最大请求队列,默认是1024,对重负载服务器,增加该值显然有好处,可调整到2048
    (10)、/proc/sys/net/ipv4/tcp_retrises2
           tcp失败重传次数,默认是15,以为着重传15次才彻底放弃,可减少到5,以尽早释放内核资源
    (11)、/proc/sys/net/ipv4/tcp_keepalive_time
           /proc/sys/net/ipv4/tcp_keepalive_intvl
           /proc/sys/net/ipv4/tcp_keepalive_probes
           这3个参数与tcp keepalive有关,默认值是:
           tcp_keepalive_time = 7200 seconds (2 hours)
           tcp_keepalive_probes = 9
           tcp_keepalive_intvl = 75 seconds
           意思是如果某个tcp连接在idle 2个小时后,内核才会发起probe
           如果probe 9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效
           对服务器而言,显然上述值太大,可调整到:
           tcp_keepalive_time = 1800 seconds 
           tcp_keepalive_probes = 3
           tcp_keepalive_intvl = 30 seconds
    (12)、/proc/sys/net/ipv4/ip_local_range
          指定端口范围的一个配置,默认是32768  61000已够大

results matching ""

    No results matching ""