# 网络测试
千兆万兆网卡实际上都是网卡在理想环境的理论值,实际的网络带宽还取决于`网络环境`和`服务器的负载`。
* iperf 可以做服务器间的网络性能测试,
# 性能测试
## [iperf][1]
### 安装
~~~
yum install -y iperf # centos
apt-get install iperf # ubuntu
~~~
### 命令
~~~
Client/Server
-i, --interval
-p, --port
-B, --bind
-u, --udp
Server specific:
-s, --server
Client specific
-b, --bandwidth #[KM] for UDP, bandwidth to send at in bits/sec
-c, --client <host> run in client mode, connecting to <host>
-n, --num #[KM] number of bytes to transmit (instead of -t
-t, --time # time in seconds to transmit for (default 10 secs)
~~~
### 用法
~~~
# 服务端
iperf -s
# 客户端 5s
iperf -c 172.30.248.61 -t 5
~~~
> 如果想要测试多个网卡跑满,需要开启多个 iperf client 端
---
# 状态监控
## [vnstat][2]
### 安装
~~~
yum install -y vnstat # centos
apt-get install vnstat # ubuntu
~~~
### 命令
~~~
-i, --iface select interface (default: eth0)
-l, --live show transfer rate in real time
~~~
### 实时监控
~~~
vnstat -l -i bond0
~~~
### 守护进程
~~~
/etc/init.d/vnstat start # 作为守护进程,使用客户端软件查看
https://www.youtube.com/watch?v=qhOemE12uXA
~~~
## [nethogs][3] 进程网络流量监控
centos版本可以直接安装使用,ubuntu的apt安装版本有bug,需要编译安装
~~~
# 下载新版本
https://github.com/raboof/nethogs/releases
# Debian/Ubuntu
apt-get install build-essential libncurses5-dev libpcap-dev
# Yum-based distro's
yum install gcc-c++ libpcap-devel.x86_64 libpcap.x86_64 ncurses*
# make && make install
When nethogs is running, press:
q: quit
s: sort by SENT traffic
r: sort by RECEIVE traffic
m: switch between total (KB, B, MB) and KB/s mode
~~~
## [nicstat][4] 网络流量统计实用工具
### 安装
~~~
apt-get install nicstat
~~~
~~~
选项:
-h #显示简单的用法
-v #显示nicstat版本
-n #只统计非本地(即非回环)接口
-s #显示摘要输出(只是接收和发送的数据量)
-x #显示扩展的输出
-M #以Mbps显示吞吐量,而不是默认的KB/s
-p #以解析后的输出格式显示
-z #跳过采样周期内是零流量的接口
-t #tcp流量统计
-u #ucp流量统计
-a #等同于'-x -t -u'
-l #只显示端口状态
-s #只显示出入带宽
-i interface[,interface...] #指定接口
~~~
### 实例
~~~
nicstat 3 2
Time Int rKB/s wKB/s rPk/s wPk/s rAvs wAvs %Util Sat
06:19:46 lo 0.72 0.72 2.15 2.15 341.2 341.2 0.00 0.00
06:19:46 eth0 0.89 0.15 1.37 0.92 660.4 163.6 0.00 0.00
Time Int rKB/s wKB/s rPk/s wPk/s rAvs wAvs %Util Sat
06:19:49 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
06:19:49 eth0 0.02 0.12 0.33 0.33 66.00 354.0 0.00 0.00
Time列:表示当前采样的响应时间.
lo and eth0 : 网卡名称.
rKB/s : 每秒接收到千字节数.
wKB/s : 每秒写的千字节数.
rPk/s : 每秒接收到的数据包数目.
wPk/s : 每秒写的数据包数目.
rAvs : 接收到的数据包平均大小.
wAvs : 传输的数据包平均大小.
%Util : 网卡利用率(百分比).
Sat : 网卡每秒的错误数.网卡是否接近饱满的一个指标.尝试去诊断网络问题的时候,推荐使用-x选项去查看更多的统计信息.
~~~
### -x 查看扩展信息
~~~
nicstat -x -i em1 1 10
14:19:58 RdKB WrKB RdPkt WrPkt IErr OErr Coll NoCP Defer %Util
em1 3966.1 4047.0 6943.4 7280.9 0.00 0.00 0.00 0.00 0.00 65.6
em1 4316.1 4352.4 8474.3 9027.6 0.00 0.00 0.00 0.00 0.00 71.0
em1 3691.2 4176.7 8140.6 8792.4 0.00 0.00 0.00 0.00 0.00 64.5
em1 3525.7 3948.8 7941.4 8249.3 0.00 0.00 0.00 0.00 0.00 61.2
~~~
### -t 查看tcp信息
~~~
nicstat -t -i em1 1 10
14:23:05 InKB OutKB InSeg OutSeg Reset AttF %ReTX InConn OutCon Drops
TCP 0.00 0.00 8611.1 9569.2 544 62.4 0.000 325 244 0.01
14:23:06 InKB OutKB InSeg OutSeg Reset AttF %ReTX InConn OutCon Drops
TCP 0.00 0.00 11297.5 12517.6 362 40.9 0.000 533 249 0.00
InKB : 表示每秒接收到的千字节.
OutKB : 表示每秒传输的千字节.
InSeg : 表示每秒接收到的TCP数据段(TCP Segments).
OutSeg : 表示每秒传输的TCP数据段(TCP Segments).
Reset : 表示TCP连接从ESTABLISHED或CLOSE-WAIT状态直接转变为CLOSED状态的次数.
AttF : 表示TCP连接从SYN-SENT或SYN-RCVD状态直接转变为CLOSED状态的次数,再加上TCP连接从SYN-RCVD状态直接转变为LISTEN状态的次数
%ReTX : 表示TCP数据段(TCP Segments)重传的百分比.即传输的TCP数据段包含有一个或多个之前传输的八位字节.
InConn : 表示TCP连接从LISTEN状态直接转变为SYN-RCVD状态的次数.
OutCon : 表示TCP连接从CLOSED状态直接转变为SYN-SENT状态的次数.
Drops : 表示从完成连接(completed connection)的队列和未完成连接(incomplete connection)的队列中丢弃的连接次数.
~~~
### -u 查看udp相关信息
~~~
nicstat.sh -u
06:39:42 InDG OutDG InErr OutErr
UDP 0.01 0.01 0.00 0.00
InDG : 每秒接收到的UDP数据报(UDP Datagrams)
OutDG : 每秒传输的UDP数据报(UDP Datagrams)
InErr : 接收到的因包含错误而不能被处理的数据包
OutErr :因错误而不能成功传输的数据包.
~~~
## ifstat 监控实时流量
简单的网络流量监控工具
### 直接安装
![](https://ws2.sinaimg.cn/large/006tNc79gy1foqka6ql6wj30rl064dgz.jpg)
### 用法
~~~
ifstat -a 1 5 #每个1s输出一次,共5次
~~~
## iftop
### 安装
~~~
CentOS上安装所需依赖包:
yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel iftop
Debian上安装所需依赖包:
apt-get install flex byacc libpcap0.8 libncurses5 iftop
~~~
### 用法
~~~
-i设定监测的网卡,如:# iftop -i eth1
-B 以bytes为单位显示流量(默认是bits),如:# iftop -B
~~~
## iptraf 流量监控工具
~~~
yum install -y iptraf
~~~
## slurm
### 安装
~~~
slurm -i bond0
~~~
![](https://ws4.sinaimg.cn/large/006tNc79gy1forisjv62zj30oe0fz407.jpg)
## cbm
~~~
cbm
~~~
![](https://ws3.sinaimg.cn/large/006tNc79gy1foqlizam7fj30wr095q3v.jpg)
## netstat
```
# 查看状态 CLOSE_WAIT ESTABLISHED FIN_WAIT2 TIME_WAIT
netstat -n | awk '/^tcp/ {++y[$NF]} END {for(w in y) print w, y[w]}'
# 查看连接数排名
netstat -n|grep ESTABLISHED |awk '{print $5}'|sort|uniq -c|sort -rn|head -n20
```
# 故障测试
[1]:https://iperf.fr/iperf-download.php
[2]:http://humdi.net/vnstat/man/vnstat.html
[3]:https://github.com/raboof/nethogs#readme
[4]:https://blogs.oracle.com/timc/nicstat-the-solaris-and-linux-network-monitoring-tool-you-did-not-know-you-needed
- 目录
- 离散的内容
- IO模型
- 网卡绑定
- ssh
- 硬件测试
- 硬件
- limits
- 网络流量
- 硬盘IO
- 硬盘
- tmux
- 主机名和域名
- http_proxy
- iptables
- 内核参数
- 块设备和字符设备
- 内存
- 虚拟内存并非交换分区
- 网络延时
- 概念
- 多核压缩
- linux基础
- SSH协议
- 软件管理
- yum
- 制作本地源 yum系列
- 制作本地源 apt系列
- apt
- 在 Linux 中移除从源代码安装的程序的一种简单的方法
- 其他
- 源码编译和二进制安装后更改配置
- DNS
- bind
- 守护进程
- 特殊权限
- limit.conf配置
- 网络
- shell-ok
- 变量ok
- 数组ok
- 系统变量和环境变量
- 运算符和计算-ok
- 条件测试-ok
- 选择-ok
- shell循环-ok
- 输出echo和printf-ok
- 技巧-ok
- pre-web
- http协议
- web服务器
- Apache
- apache安装
- yum安装
- 二进制安装
- 编译安装
- httpd命令
- 运行 监控apache
- apache配置文件
- 常用配置
- MPM多处理模块
- 编译模块
- apache模块
- apache核心模块
- apache标准模块
- apache第三方模块
- 虚拟主机
- 1
- CGI-FastCGI-SSI
- 别名和重定向
- apache应用
- 301重定向
- apache防盗链
- http转化为https
- 访问时间段控制
- 控制访问目录
- 限制指定USER_AGENT
- 不同客户端访问不同网页
- apache黑名单
- httpd之禁止解析php
- 不记录css/js/img的访问日志
- 浏览器端静态缓存
- apache访问日志自动切割
- order-require
- 压缩传输
- httpd-ssl
- apache代理
- 正向代理
- 反向代理
- apache调优
- httpd压力测试工具ab
- CGI测试
- php
- php原理
- httpd和php的结合方式
- php yum安装之DSO模式
- php 编译安装之DSO模式
- php-fpm详解
- php yum安装之php-fpm模式
- php 编译安装之FastCGI模式
- php扩展之mysql
- php扩展之gd
- php扩展之pcntl
- php扩展之xcache
- php扩展之ZendGuardLoader
- phpMyAdmin
- wordpress
- 数据库-mysql
- 数据库原理
- mysql数据库原理
- mysql源码编译安装
- mysql二进制包安装
- mysql命令行工具
- 更改密码
- 数据库授权grant
- mysql日志
- 命令
- 常用
- 小命令大作为
- awk 报告生成器
- 网络命令
- 命令查找
- 压缩归档命令
- 文件管理
- 文件管理命令
- 文件查看命令
- 目录管理命令
- 用户管理命令
- 用户权限管理
- curl
- cheat
- chrony
- command
- crontab任务计划
- cut
- date
- dd
- df
- echo
- find
- grep
- hash
- iftop
- kill pkill killall
- ls
- lsmod和modprobe
- lsof
- man
- mkpasswd
- mount
- mtr
- netstat
- nmap
- nc
- NTP
- passwd
- rm
- rdate
- pv
- sar系统活动情况报告
- sed文本处理命令
- setup
- screen
- shutdown
- sort 命令
- sudo
- tcpdump
- top
- uniq
- wget
- who
- xargs
- 监控
- zabbix邮件报警
- Redis
- redis安装
- redis数据类型和操作方法
- redis持久化和配置
- redis主从配置
- php连接redis
- redis实现session共享
- 安装测试
- redis设置密码
- ELK日志分析系统
- elasticsearch
- logstash
- logstash插件
- filebeat日志收集
- kibana
- jenkins
- jenkins安装与配置
- 案例1
- 案例2
- 案例3
- 代码仓库之svn
- svn服务端配置
- 常用操作
- svn备份
- LB集群
- LVS负载均衡集群
- ipvsadm使用方法
- LVS调度方法
- NAT原理
- NAT实践
- DR原理
- DR实践
- TUN原理
- LVS持久连接
- HA集群
- HPC集群
- 共享存储
- ftp协议
- vsftpd
- NFS
- 网站架构发展
- 文件同步
- rsync基本用法
- rsync安装和使用_拉取模式
- lsyncd安装和用法
- zabbix
- zabbix服务端安装
- zabbix客户端安装
- zabbix编译安装
- zabbix监控tomcat
- zabbix监控mysql
- gitlab
- supervisor
- nsq
- ruby
- nodejs
- consul
- mesos
- zookeeper
- rwho
- 对象存储
- 工具
- rclone
- minio
- linux 性能调优
- CPU
- 第一部分 CPU
- 安全