性能检测
工具 简单介绍
top 查看进程活动状态以及一些系统状况
vmstat 查看系统状态、硬件和系统信息等
iostat 查看CPU 负载,硬盘状况
sar 综合工具,查看系统状况
mpstat 查看多处理器状况
netstat 查看网络状况
iptraf 实时网络状况监测
tcpdump 抓取网络数据包,详细分析
mpstat 查看多处理器状况
tcptrace 数据包分析工具
netperf 网络带宽工具
dstat 综合工具,综合了 vmstat, iostat, ifstat, netstat 等多个信息
IO
iftop
-i eth0 指定网卡名 -P 90 指定端口
-F 192.168.1.0/24 只显示指定网段
12.5Kb 25.0Kb 37.5Kb 50.0Kb 62.5Kb ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- liushuo => 121.28.69.79 4.12Kb 3.89Kb 3.89Kb <= 320b 320b 320b liushuo => 169.254.0.4 5.14Kb 2.57Kb 2.57Kb <= 2.97Kb 1.48Kb 1.48Kb liushuo => 183.60.82.98 560b 850b 850b <= 516b 1.15Kb 1.15Kb liushuo => 183.60.83.19 280b 570b 570b <= 0b 522b 522b liushuo => 106.2.176.5 320b 160b 160b <= 416b 208b 208b liushuo => 169.254.128.17 112b 112b 112b <= 112b 112b 112b liushuo => 169.254.128.10 112b 112b 112b <= 112b 112b 112b ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- TX: 写 cum: 4.11KB peak: 10.6Kb rates: 10.6Kb 8.22Kb 8.22Kb RX: 读 1.94KB 4.41Kb 4.41Kb 3.88Kb 3.88Kb TOTAL: 6.05KB 15.0Kb 15.0Kb 12.1Kb 12.1Kb
iotop
Total DISK READ : 7.87 K/s | Total DISK WRITE : 3.94 K/s Actual DISK READ: 7.87 K/s | Actual DISK WRITE: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND 3794 be/4 root 0.00 B/s 3.94 K/s 0.00 % 0.00 % barad_agent 15872 be/4 mysql 0.00 B/s 0.00 B/s 0.00 % 0.00 % mysqld 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % systemd --switched-root --system --deserialize 21 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 3 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] 15876 be/4 mysql 0.00 B/s 0.00 B/s 0.00 % 0.00 % mysqld
nethogs 查看进程的相关流量
NetHogs version 0.8.5 PID USER PROGRAM DEV SENT RECEIVED 3794 root barad_agent eth0 0.224 0.091 KB/sec 22022 root sshd: root@pts/0 eth0 0.145 0.042 KB/sec ? root 172.16.0.15:23911-185.176.26.104:59826 0.011 0.021 KB/sec 4141 root /usr/local/qcloud/YunJing/YDEyes/YDService eth0 0.044 0.000 KB/sec ? root unknown TCP 0.000 0.000 KB/sec TOTAL 0.424 0.154 KB/sec
netstat -nultp TCP状态(负载均衡器)
netstat -n |awk '/^tcp/ {++state[$NF]} END {for (key in state) print key,"\t",state[key]}'
nmon
lnmon-16g---------------------Hostname=liushuo------Refresh= 2secs ---09:13.35---------------------------------------------------------------------------------------k x x x ------------------------------ x x _ __ _ __ ___ ___ _ __ For help type H or ... x x | '_ \| '_ ` _ \ / _ \| '_ \ nmon -? - hint x x | | | | | | | | | (_) | | | | nmon -h - full details x x |_| |_|_| |_| |_|\___/|_| |_| x x To stop nmon type q to Quit x x ------------------------------ x x x x CentOS Linux release 7.2.1511 (Core) VERSION="7 (Core)" x x Vendor=GenuineIntel Model=Intel(R) Xeon(R) CPU E5-26xx v4 x x MHz=2394.446 bogomips=4788.89 lscpu:CPU=1 Little Endian x x ProcessorChips=1 PhyscalCores=1 Sockets=1 Cores=1 Thrds=1 x x VirtualCPUs =1 MHz=2394 max=0 min=0 x x x x Use these keys to toggle statistics on/off: x x c = CPU l = CPU Long-term - = Faster screen updates x x C = " WideView U = Utilisation + = Slower screen updates x x m = Memory V = Virtual memory j = File Systems x x d = Disks n = Network . = only busy disks/procs x x r = Resource N = NFS h = more options x x k = Kernel t = Top-processes q = Quit x x--------------------------------------------------------------------------------------------------------------------------------------------------------------------x x x x x x x
正确的使用dd进行磁盘读写速度测试
测试方式:使用dd指令,对磁盘进行连续写入,不使用内存缓冲区,每次写入8k的数据,总共写入20万次,产生1.6G大小的文件。 测试指令:dd if=/dev/zero of=/data01/test.dbf bs=8k count=200000 conv=fdatasync ---------------------------------------------- 正确的使用dd进行磁盘读写速度测试 dd是Linux/UNIX 下的一个非常有用的命令,作用是用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换,所以可以用来测试硬盘的顺序读写能力。可以写文件,可以写裸设备。 dd语法 --------------------------------------------------------- 功能说明:读取,转换并输出数据。 语 法:dd [bs=<字节数>][cbs=<字节数>][conv=<关键字>][count=<区块数>][ibs=<字节数>][if=<文件>][obs=<字节数>][of=<文件>][seek=<区块数>][skip=<区块数>][--help][--version] 补充说明:dd可从标准输入或文件读取数据,依指定的格式来转换数据,再输出到文件,设备或标准输出。 参 数: bs=<字节数> 将ibs( 输入)与obs(输出)设成指定的字节数。 cbs=<字节数> 转换时,每次只转换指定的字节数。 conv=<关键字> 指定文件转换的方式。 count=<区块数> 仅读取指定的区块数。 ibs=<字节数> 每次读取的字节数。 if=<文件> 从文件读取。 obs=<字节数> 每次输出的字节数。 of=<文件> 输出到文件。 seek=<区块数> 一开始输出时,跳过指定的区块数。 skip=<区块数> 一开始读取时,跳过指定的区块数。 --help 帮助。 --version 显示版本信息。 dd常用参数详解 --------------------------------------------------------- if=xxx 从xxx读取,如if=/dev/zero,该设备无穷尽地提供0,(不产生读磁盘IO) of=xxx 向xxx写出,可以写文件,可以写裸设备。如of=/dev/null,"黑洞",它等价于一个只写文件. 所有写入它的内容都会永远丢失. (不产生写磁盘IO) bs=8k 每次读或写的大小,即一个块的大小。 count=xxx 读写块的总数量。 避免操作系统“写缓存”干扰测试成绩,使用sync、fsync、fdatasync --------------------------------------------------------- 关于sync、fsync、fdatasync请参考:http://elf8848.iteye.com/blog/2088986 dd bs=8k count=4k if=/dev/zero of=test.log conv=fsync dd bs=8k count=4k if=/dev/zero of=test.log conv=fdatasync dd bs=8k count=4k if=/dev/zero of=test.log oflag=dsync dd bs=8k count=4k if=/dev/zero of=test.log 默认“写缓存”启作用 dd bs=8k count=4k if=/dev/zero of=test.log conv=sync “写缓存”启作用 dd bs=8k count=4k if=/dev/zero of=test.log; sync “写缓存”启作用 dd bs=8k count=4k if=/dev/zero of=test.log conv=fsync 加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,,这样算出来的时间才是比较符合实际使用结果的。conv=fsync表示把文件的“数据”和“metadata”都写入磁盘(metadata包括size、访问时间st_atime & st_mtime等等),因为文件的数据和metadata通常存在硬盘的不同地方,因此fsync至少需要两次IO写操作,fsync 与fdatasync相差不大。(重要,最有参考价值) dd bs=8k count=4k if=/dev/zero of=test.log conv=fdatasync 加入这个参数后,dd命令执行到最后会真正执行一次“同步(sync)”操作,,这样算出来的时间才是比较符合实际使用结果的。conv=fdatasync表示只把文件的“数据”写入磁盘,fsync 与fdatasync相差不大。(重要,最有参考价值) dd bs=8k count=4k if=/dev/zero of=test.log oflag=dsync 加入这个参数后,每次读取8k后就要先把这8k写入磁盘,然后再读取下面一个8k,一共重复4K次。这是最慢的一种方式了。 dd bs=8k count=4k if=/dev/zero of=test 没加关于操作系统“写缓存”的参数,默认“写缓存”启作用。dd先把数据写的操作系统“写缓存”,就完成了写操作。通常称为update的系统守护进程会周期性地(一般每隔30秒)调用sync函数,把“写缓存”中的数据刷入磁盘。因为“写缓存”起作用,你会测试出一个超级快的性能。 如:163840000 bytes (164 MB) copied, 0.742906 seconds, 221 MB/s dd bs=8k count=4k if=/dev/zero of=test conv=sync conv=sync参数明确“写缓存”启作用,默认值就是conv=sync dd bs=8k count=4k if=/dev/zero of=test; sync 与第1个完全一样,分号隔开的只是先后两个独立的命令。当sync命令准备开始往磁盘上真正写入数据的时候,前面dd命令已经把错误的“写入速度”值显示在屏幕上了。所以你还是得不到真正的写入速度。 裸设备测试 ---------------------- 1、裸设备到文件系统 dd if=/dev/rsd1b of=/backup/df1.dbf bs=8k skip=8 count=3841 2、文件系统到裸设备 dd if=/backup/df1.dbf of=/dev/rsd2b bs=8k seek=8