关于linux:Linux网络性能优化

40次阅读

共计 2986 个字符,预计需要花费 8 分钟才能阅读完成。

curl 申请接口

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{"CI_NO":"PWIN2008026"}' 'https://soatest.tp-link.com.cn:7077/TP3CWTEST/GET_TOTAL_TGW_BY_CI_NO'

ping

ping [IP/Host]   -- 测试主机连通性

测试链路最大 MTU 值:ping -l 1472 -f -n 1 [IP/Host], 其中,-l : 报文字节数,也即 MSS(最大报文长度),MTU(最大传输单元,通常为 1500 byte) = MSS + TCP 首部(根本大小为 20byte)+ IP 首部(根本大小为 20byte)= 1460
-f: 标识 IP 层不分片(即 IP 协定中 DF 标记地位 1),若以后通过节点 MTU 值大于 ICMP 探测报文大小 (ping 实质为 ICMP 探测报文),并且 DF 标记位为 1,则以后节点会间接抛弃该报文,且回答源主机
ICMP TYPE 3 CODE 4 报文(Fragmentation needs and DF set);但如果 DF 标记位为 0,标识可进行 IP 层分片,则报文可根据以后节点 MTU 值进行分片,顺利通过。TCP 建设连贯前两次握手时会进行 MSS 大小商量,以确定后续数据传输时传输层应用的报文最大大小,通常应不大于 MSS 值且 IP 层 DF 标识地位 1,应由 TCP 来保障应用层数据传输数据的分组与重组

traceroute

telnet

netstat

列出连贯信息

-a: 列出以后所有连贯(tcp, udp 和 unix 协定下所有套接字的所有连贯)-at:  列出 TCP 协定的连贯
-au: 列出 UDP 协定的连贯
-tnl: 只列出监听中的 TCP 连贯
-ant: 默认状况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名, 这会升高查找速度,能够应用 -n 选项禁用域名解析性能 

显示过程信息

sudo netstat -nltp
应用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能失去运行在 root 权限下的过程名,而很多服务包含 http 和 ftp 都运行在 root 权限之下

sudo netstat -nltep

-ep 选项能够同时查看过程名和用户名 

统计网络包收发状况

$ netstat -s
Ip:
    337338596 total packets received
    0 forwarded
    0 incoming packets discarded
    337338562 incoming packets delivered
    329444117 requests sent out
    36 reassemblies required
    17 packets reassembled ok
    15 fragments received ok
    31 fragments created
Icmp:
    37331 ICMP messages received
    309 input ICMP message failed.
    ICMP input histogram:
        destination unreachable: 5266
        timeout in transit: 30
        echo requests: 31910
        echo replies: 125
    116861 ICMP messages sent
    0 ICMP messages failed
    ICMP output histogram:
        destination unreachable: 82161
        echo request: 2790
        echo replies: 31910
...

显示内核路由信息 (与 route 命令一样)

$  netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
172.29.41.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0
0.0.0.0         172.29.41.1     0.0.0.0         UG        0 0          0 eth0

打印网络接口信息(ifconfig 相似)

$ netstat -ei 
Kernel Interface table
eth0      Link encap:Ethernet  HWaddr 00:50:56:90:B5:20
          inet addr:172.29.41.175  Bcast:172.29.41.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:fe90:b520/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:107843877 errors:0 dropped:0 overruns:0 frame:0
          TX packets:60002144 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:24099140098 (22.4 GiB)  TX bytes:117088850527 (109.0 GiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:269720272 errors:0 dropped:0 overruns:0 frame:0
          TX packets:269720272 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:39429889451 (36.7 GiB)  TX bytes:39429889451 (36.7 GiB)

显示多播组信息

netstat -g
IPv6/IPv4 Group Memberships
Interface       RefCnt Group
--------------- ------ ---------------------
lo              1      all-systems.mcast.net
eth0            1      224.0.0.251
eth0            1      239.77.124.213
eth0            1      all-systems.mcast.net
docker0         1      all-systems.mcast.net
lo              1      ff02::1
eth0            1      ff02::202
eth0            1      ff02::1:ff90:b520
eth0            1      ff02::1
docker0         1      ff02::1:ff08:b3fd
docker0         1      ff02::1

搭配 grep 打印 active 状态的连贯
netstat -atnp | grep ESTA

查看 http,smtp 或 ntp 服务是否在运行
sudo netstat -aple | grep ntp

搭配 watch 命令监督 active 状态的连贯

watch -d -n0 "netstat -atnp | grep ESTA"

搭配 awk 查看 TCP 连贯状态

netstat -n | awk '/^tcp/ {++state[$NF]} END {for (key in state) print key,"\t", state[key]}'

正文完
 0