性能指标 | 工具 | 说明 |
---|---|---|
吞吐量(BPS) | sar nethogs iftop | 分别可以查看网络接口、进程以及 IP 地址的网络吞吐量 |
PPS | sar /proc/net/dev | 查看网络接口的 PPS |
连接数 | netstat ss | 查看连接数 |
延迟 | ping hping3 | 通过 ICMP、TCP 等测试网络延迟 |
连接跟踪数 | conntrack | 查看和管理连接跟踪状况 |
路由 | mtr route traceroute | 查看路由并测试链路信息 |
DNS | dig nslookup | 排查 DNS 解析问题 |
防火墙和 NAT | iptables | 配置管理防火墙和 NAT 规则 |
网卡功能 | ethtool | 查看和配置网络接口的功能 |
抓包 | tcpdump Wireshark | 抓包分析网络流量 |
内核协议栈跟踪 | bcc systemtap | 动态跟踪内核协议栈的行为 |
工具 | 主要功能 |
---|---|
ifconfig ip | 配置和查看网络接口 |
ss | 查看网络连接数 |
sar /proc/net/dev /sys/class/net/eth0/statistics/ | 查看网络接口的网络收发情况 |
netlogs | 查看进程的网络收发情况 |
iftop | 查看 IP 的网络收发情况 |
ethtool | 查看和配置网络接口 |
conntrack | 查看和管理连接跟踪状况 |
nslookup dig | 排查 DNS 解析问题 |
mtr route treceroute | 查看路由并测试链路信息 |
ping hping3 | 测试网络延迟 |
tcpdump | 网络抓包工具 |
iptables | 配置和管理防火墙即 NAT 规则 |
perf | 剖析内核协议栈的性能 |
systemtap bcc | 动态追踪内核协议栈的行为 |
TCP 优化
TCP 优化方法 | 内核选项 | 参考设置 |
---|---|---|
增大处于 TIME_WAIT 状态的连接数量 | net.ipv4.tcp_max_tw_buckets | 1048576 |
增大连接跟踪表大小 | net.netfilter.nf_conntrack_max | 1048576 |
缩短处于 TIME_WAIT 状态的超时时间 | net.ipv4.tcp_fin_timeout | 15 |
缩短连接跟踪表中处于 TIME_WAIT 状态连接的超时时间 | net.netfilter.nf_conntrack_tcp_timeout_time_wait | 30 |
允许 TIME_WAIT 状态占用的端口还可以用到新建的连接中 | net.ipv4.tcp_tw_reuse | 1 |
增大本地端口号范围 | net.ipv4.ip_local_port_range | 10000 65000 |
增大系统和应用程序的最大文件描述符数 | fs.nr_open(系统),systemd 配置文件中的 LimitNOFILE(应用程序) | 1048576 |
增大半连接的最大数量 | net.ipv4.tcp_max_syn_backlog | 16384 |
开启 SYN Cookies | net.ipv4.tcp_syncookis | 1 |
缩短发送 Keepalive 探测包的间隔时间 | net.ipv4.tcp_keepalive_intvl | 30 |
减少 Keepalive 探测失败后通知应用程序前的重试次数 | net.ipv4.tcp_keepalive_probes | 3 |
缩短最后一次数据包到 Keepalive 探测包的间隔时间 | net.ipv4.tcp_keepalive_time | 600 |