# 網絡測試
千兆萬兆網卡實際上都是網卡在理想環境的理論值,實際的網絡帶寬還取決于`網絡環境`和`服務器的負載`。
* 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 監控實時流量
簡單的網絡流量監控工具
### 直接安裝

### 用法
~~~
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
~~~

## cbm
~~~
cbm
~~~

## 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
- 安全