网站建设花费录什么费用安徽省住房城乡建设厅网站电工
在高速网络传输中,每秒传输的数据量非常大。网络设备设置有一种缓存机制,即“缓存区”,在 Linux 系统中,网卡缓冲分为两种类型:软件缓冲区和硬件缓冲区。
 要提高网络吞吐率,首先当然是升级linux kernel。其次是设置linux系统参数和网卡驱动参数。
 查看当前linux系统参数
 $ cat /etc/sysctl.conf 
     vm.swappiness = 0
     net.ipv4.neigh.default.gc_stale_time = 120
    # see details in https://help.aliyun.com/knowledge_detail/39428.html
     net.ipv4.conf.all.rp_filter = 0
     net.ipv4.conf.default.rp_filter = 0
     net.ipv4.conf.default.arp_announce = 2
     net.ipv4.conf.lo.arp_announce = 2
     net.ipv4.conf.all.arp_announce = 2
    # see details in https://help.aliyun.com/knowledge_detail/41334.html
     net.ipv4.tcp_max_tw_buckets = 5000
     net.ipv4.tcp_syncookies = 1
     net.ipv4.tcp_max_syn_backlog = 1024
     net.ipv4.tcp_synack_retries = 2
    net.ipv6.conf.all.disable_ipv6 = 1
     net.ipv6.conf.default.disable_ipv6 = 1
     net.ipv6.conf.lo.disable_ipv6 = 1
kernel.sysrq = 1
可以设置为下面这一组优化后的系统参数:
     sysctl -w net.ipv4.tcp_tw_reuse=1
     sysctl -w net.ipv4.tcp_tw_recycle=1
     sysctl -w net.ipv4.tcp_fin_timeout=30
     sysctl -w net.ipv4.tcp_keepalive_time=600
     sysctl -w net.ipv4.tcp_max_syn_backlog=8192
     sysctl -w net.ipv4.tcp_max_tw_buckets=5000
     sysctl -w net.ipv4.ip_local_port_range='1024 65000'
     sysctl -w net.ipv4.tcp_rmem='4096 436600 873200'
     sysctl -w net.ipv6.conf.all.disable_ipv6=1
     sysctl -w net.ipv6.conf.default.disable_ipv6=1
     sysctl -w net.ipv4.tcp_synack_retries=2
     sysctl -w net.ipv4.tcp_syn_retries=2
    sysctl -w net.core.wmem_max=16777216
     sysctl -w net.core.wmem_default=16777216
     sysctl -w net.core.rmem_max=16777216
     sysctl -w net.core.rmem_default=16777216
$ sysctl -p
网卡驱动一般情况下不允许设置,但可以查询设置情况和统计信息以定位问题。
 如果可能,应该升级linux kernel和net driver(ko)以便获得更好的网络性能。
 下面是一台典型centos7 VPS的网卡信息,驱动较为简单。
 root@iZj6c591g5r6irirqvcj5gZ ~/$ ethtool -i eth0
 driver: virtio_net
 version: 1.0.0
 firmware-version: 
 expansion-rom-version: 
 bus-info: 0000:00:03.0
 supports-statistics: no
 supports-test: no
 supports-eeprom-access: no
 supports-register-dump: no
 supports-priv-flags: no
 root@iZj6c591g5r6irirqvcj5gZ ~/$ ethtool -g eth0
 Ring parameters for eth0:
 Pre-set maximums:
 RX:        4096
 RX Mini:    0
 RX Jumbo:    0
 TX:        4096
 Current hardware settings:
 RX:        4096
 RX Mini:    0
 RX Jumbo:    0
 TX:        4096
root@iZj6c591g5r6irirqvcj5gZ ~/$ ethtool -l eth0
 Channel parameters for eth0:
 Pre-set maximums:
 RX:        0
 TX:        0
 Other:        0
 Combined:    4
 Current hardware settings:
 RX:        0
 TX:        0
 Other:        0
 Combined:    4
下面的设置全部失败。
 root@iZj6c591g5r6irirqvcj5gZ ~/ $ 
 $ ethtool -L eth0 tx 8 rx 8 other 8 combined 8
 $ ethtool -G eth0 rx 8192 tx 8192
 $ ethtool -C eth0 adaptive-tx off
