系统监测和性能分析工具

作为一名linux运维工程师来说,对linux系统的日常管理,检测和系统性能的分析是必不可少的。也有一些针对系统监测和性能分析的工具。咱们现在就来了解一下。

tcpdump命令:

网络抓包工具,过滤数据包或者定制输出格式:

常用选项:

-n :  用IP地址表示主机,用数字表示端口号。

-i  : 监听网卡接口,

-i  any :   抓取所有网卡接口的数据包。

-v  :  输出详细信息。

-t :  不打印时间戳

-e :  显示以太网帧头部信息。

-x  :  以十六进制数显示数据包的内容。

-X  :  打印每个十六进制字节对应ascii字符。

-XX :  打印以太网帧的头部信息。

-s :   设置抓包时的抓取长度。默认的抓包长度被修改为65535字节。

-S  :   绝对值显示TCP报文段的序号。

-w  :  将tcpdump的输出以特定格式定向到某个文件。

-r  :  从文件读取数据包信息并显示。

tcpdump表达式操作数:

类型(type): 解释其后面紧跟着的参数的含义。

支持的类型包括:host, net,port,portrange. 可分别指定(IP地址),

用CIDR方法表示的网络地址,端口号和端口范围。

例如: tcpdump net  1.0.0.0/8

方向(dir): src指定数据包的发送端,dst指定数据包的目的端。

例如:tcpdump  dst  port  53

协议(proto): 指定目标协议,

例如: tcpdump    icmp

支持逻辑操作符:and(&&),  or(||),  not(!)

例如:

tcpdump ip host 主机名 and not 主机名

如果表达式较复杂:用括号分组,用反斜杠\ 或单引号转义。

例如: tcpdump ‘src 1.1.1.1 and (dst port 3389 or 22)‘

使用部分协议字段的内容来过滤数据包

例如:tcpdump ‘tcp[13] & 2 != 0‘

lsof 命令:

列出当前系统打开的文件描述符的工具。

常用选项:

-i : 显示socket文件描述符。

使用方法:

lsof -i [46] [protocol][@hostname][ipaddr][:service|port]

说明:

4: ipv4协议

6: ipv6协议。

protocol 指定传输层协议。

hostname 指定主机名。

ipaddr   主机IP地址。

service  指定服务名

port     指定端口号。

-u : 显示指定用户启动的所有进程打开的所有文件描述符。

-c : 显示指定的命令打开的所有文件描述符。

例如:lsof  -c  httpd

-p : 显示指定进程打开的所有文件描述符。

-t  : 显示打开了目标文件描述符的进程PID。

使用:

#lsof -p  进程号

输出信息详解:

COMMAND : 执行程序所用的命令。

PID : 文件描述符所属进程的PID

USER : 用户名。

FD : 文件描述符的描述。

cwd : 进程的工作目录。

rtd : 用户的根目录。

txt : 进程运行的程序代码。

mem : 映射到内存的文件。

FD以数字+访问权限表示。

数字: 文件描述符的具体数值。

访问权限:r(可读) ,  w(可写),u(可读可写)

0u,1u,2u :标准输入,标准输出,标准错误输出。

3u : 处于LISTEN状态的监听socket

4u :epoll内核事件对应的文件描述符。

TYPE:文件描述符类型。

DIR : 目录。

REG :  普通文件。

CHR :  字符设备文件

IPv4 : IPv4类型的socket文件描述符。0000是未知类型。

DEVICE : 文件所属设备,

字符设备和块设备:主设备号,此设备号。

程序文件和动态库:8:SCSI硬盘。 3 : 该硬盘的第3个分区。

FIFO类型的文件:例如:管道和socket ,

显示一个内核引用目标文件的地址。

SIZE/OFF : 文件大小或者偏移值。

0t/ox : 偏移值。否则是文件大小。

NODE : 文件的i节点号,对于socket,则显示为协议类型。

NAME : 文件名

nc 命令:

用来快速构建网络连接。可以服务器方式运行,也可以客户端方式运行。

默认以客户端方式运行。

常用选项:

-i : 设置数据包传送的时间间隔。

-l : 以服务器方式运行,监听指定端口。

-k : 重复接收并处理某个端口的所有连接,与-l 一起使用。

-n  : IP地址表示主机,数字表示端口。

-s : 设置本地主机发送出的数据包的IP地址。

-C : 将CR和LF两个字符作为行结束符。

-U : 使用unix本地域协议通信。

-u :  使用UDP协议,默认使用TCP协议。

-w :  未检测到输入,则退出。

-X : 指定C-S之间使用的通信协议。

-x :  指定目标代理服务器的IP地址和端口号。

例如:

nc -x www:1080 -X connect www.yuan.com 80

-z  :  扫描目标主机的某个服务是否开启。

-C  :  HTTP行结束符。

strace 命令:

测试服务器性能的工具。

跟踪程序运行过程中执行的系统调用和接收到的信号,并将系统调用名,参数,返回值及信号名输出到标准输出和指定的文件。

常用的选项:

-c  统计每个系统调用执行时间,执行次数和出错次数。

-f  跟踪由fork调用生成的子进程。

-t  加上时间信息。

-e  指定表达式,用来控制如何跟踪系统调用。

格式:

[qualifier=][!]values1[,value2]......

qualifier: trace,abbrev,verbose,raw,signal, read,write.   默认是trace.

value 取值:

-e trace=set : 只跟踪指定的系统调用。

-e trace=file : 只跟踪与文件操作相关的系统调用。

-e trace=process : 跟踪与进程控制相关的系统调用。

-e trace=network : 网络相关

-e tace=signal : 信号相关

-e trace=ipc : 与进程间通信相关

-e signal=set  : 跟踪指定的信号

-e read=set : 输出从指定文件中读入的数据。

-o : 将strace的输出写入指定的文件。

netstat命令:

网络信息统计工具。打印本地网卡接口上的连接,路由表信息,网卡接口信息。

常用的选项:

-n  :  IP地址表示主机,数字表示端口。

-a  : 包含监听socket.

-t  : 显示TCP连接。

-r :  显示路由信息

-i  : 显示网卡接口的数据流量。

-c : 每隔1s输出一次。

-o : 显示socket定时器的信息。

-p : 显示socket所属进程的PID和名字。

ifstat命令:

网络流量监测工具。

常见选项:

-a  : 监测所有网卡接口。

-i  :  指定要监测的网卡接口。

-t  :  输出信息加时间戳。

-b  : 以Kbit/s为单位显示数据。

delay :  采样间隔。

count : 采样次数。

例如:ifstat  -a  2  5

mpstat 命令:

  实时监测多处理器系统上每个cpu的使用情况。

需要安装sysstat 包。

用法:mpstat [-p {|all}] [interval][count]]

-p  : 指定要监控的CPU号。

all  : 监听所有的CPU

interval : 采样间隔。

count  :  采样次数。

例如:#mpstat  -P  ALL  5  2

输出信息:

%usr :  除了nice值为负的进程,系统其他进程运行在用户空间的时间占CPU总运行时间的比例。

%nice :  nice值为负的进程运行在用户空间的时间占CPU总运行时间的比例。

%sys  :  系统上所有进程运行在内核空间的时间占CPU总运行时间的比例。

%iowait  :  CPU等待磁盘操作的时间占CPU总运行时间的比例。

%irq    :   CPU用于处理硬件中断的时间占CPU总运行时间的比例。

%soft   :  CPU用于处理软件中断的时间占CPU总运行时间的比例。

%steal    :  一个物理CPU可以包含一对虚拟CPU,

由超级管理程序管理。当超级管理程序在处理某个虚拟CPU时,

另外一个虚拟CPU则必须等待它处理完成才能运行。

等待时间就是steal时间。该字段表示steal时间占CPU总运行时间的比例。

%guest  :  运行虚拟CPU的时间占CPU总运行时间的比例。

%idle  :  系统空闲的时间占CPU总运行时间的比例。

 主要注意:%usr, %sys, %idle的变化。

系统性能工具:

  sar命令:

分析系统性能的重要工具。

可获取系统的CPU,运行队列,磁盘I/O,分页(交换区),内存,CPU中断,网络等性能数据。

语法:

sar [options] [-o filename] [interval [count]]

选项含义:

-A  :  显示系统所有资源设备(CPU,内存,磁盘) 的运行状况。

-u  :  显示系统所有CPU在采样时间内的负载状态。

-P: 显示当前系统中指定CPU的使用情况。

-d: 显示所有硬盘设备在采样时间内的使用情况。

-r : 显示系统内存在采样时间内的使用情况。

-b: 显示缓冲区在采样时间内的使用情况。

-v  :  显示进程,文件,节点和锁表状态。

-n  显示网络运行状态。

参数:DEV  : 显示网络接口信息。

EDEV : 显示网络错误的统计数据。

SOCK : 显示套接字信息。

FULL  : 显示前三参数的所有信息。

-q  : 显示了运行队列的大小。

-R  : 显示进程在采样时间内的活动情况。

-y  : 显示终端设备在采样时间内的活动情况。

-w  :  显示系统交换活动在采样时间内的状态。

-o  filename, 将命令结果以二进制格式存放在文件中,filename是文件名。

interval  :  表示采样间隔时间。

count :  表示采样次数。默认值1.

例如:

查看系统CPU的整体负载负载状况。

#sar   -u   3  5

系统的CPU 从0开始。查看第二个CPU的运行负载。

#sar  -P  1 3 5

查看系统磁盘读写性能:

#sar  -d 3 5

查看系统内存使用情况,网络运行状态:

#sar  -r  5  2

#sar  -n  DEV  5 3

#sar  -u  3  5

输出信息详解:

%user  :  用户进程消耗的CPU时间百分比。

%nice :  运行正常进程所消耗的CPU时间百分比。

%system  : 系统进程消耗的CPU时间百分比。

%iowait  :   I/O等待所占用的CPU时间百分比。

%steal  : 内存不足时,pagein强制对不同的页面进行的steal操作。

%idle  :   CPU处在空闲状态的时间百分比。

可分开查询系统的每个CPU,统计每个CPU的 使用情况。

#sar -P 0 3 5

iostat 命令:

对系统的磁盘I/O操作进行监视。

显示磁盘读写操作的统计信息。

对系统整体情况进行分析。

要安装sysstat的工具包。

语法:

iostat [-c | -d] [-k] [-t] [-x [device]] [interval [count]]

选项含义:

-c  :  显示CPU的使用情况。

-d  : 显示磁盘的使用情况。

-k  : 每秒以KB为单位显示数据。

-t  : 打印出统计信息开始执行的时间。

-x device  :  指定要统计的磁盘设备名称,默认为所有磁盘设备。

interval  :  指定两次统计间隔的时间。

count  : 按照"interval" 指定的时间间隔统计的次数。

组合使用:

查看系统磁盘的使用状况:

#iostat -d 2 3

输出内容详解:

Blk_read/s  :  每秒读取的数据块数。

Blk_wrtn/s  : 每秒写入的数据块数。

Blk_read  :  读取的所有块数。

Blk_wrtn :  写入的所有块数。

iostat -x 组合提供了对每个磁盘的单独统计,默认是对所有磁盘进行统计。

例如:iostat -x /dev/sda 2 3

输出内容解释:

rrqm/s  :  每秒进行合并的读操作数目。

wrqm/s  :  每秒进行合并的写操作数目。

r/s  :  每秒完成读I/O设备的次数。

w/s :  每秒完成写I/O设备的次数。

rsec/s  :  每秒读取的扇区数。

wsec/s : 每秒写入的扇区数。

free 命令 :

监控linxu内存使用状况。

选项:

-m  :  以M为单位的内存使用情况。

-s  :  指定的时间段内不断地监控内存的使用情况。

-b :  以1024字节为单位显示内存使用情况。

公式:

可用内存/物理内存> 70% ,表示系统内存资源充足。

可用内存/物理内存<20%时,系统内存资源紧缺。

20%<可用内存/物理内存<70%时, 内存资源满足应用需求。

如有什么不对之处,敬请指正。

时间: 2024-07-31 11:39:27

系统监测和性能分析工具的相关文章

系统级性能分析工具perf的介绍与使用

测试环境:Ubuntu14.04  on VMWare Kernel:3.13.0-32 系统级性能优化通常包括两个阶段:性能剖析(performance profiling)和代码优化.性能剖析的目标是寻找性能瓶颈,查找引发性能问题的原因及热点代码.代码优化的目标是针对具体性能问题而优化代码或编译选项,以改善软件性能. 在性能剖析阶段,需要借助于现有的profiling工具,如perf等.在代码优化阶段往往需要借助开发者的经验,编写简洁高效的代码,甚至在汇编级别合理使用各种指令,合理安排各种指

超全整理!Linux性能分析工具汇总合集

出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面.如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列. 本文档主要是结合Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具的博文,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性

Jvisualvm--JAVA性能分析工具

JDK自带的JAVA性能分析工具.它已经在你的JDK bin目录里了,只要你使用的是JDK1.6 Update7之后的版本.点击一下jvisualvm.exe图标它就可以运行了. 这里是VisualVM 的官方网站:https://visualvm.dev.java.net,资料很全,同时提供VisualVM最近版本下载. 1.安装 只要安装JDK即可,运行jvisualvm.exe ,选择[工具]——[插件]——[可用插件] · 2使用 2.1.远程机器设置 要从远程应用程序中检索数据,需要在

Linux 性能分析工具汇总合集

出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面.如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列. 本文档主要是结合Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具的博文,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性

Linux性能分析工具汇总合集

出于对Linux操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章.本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面.如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列. 本文档主要是结合Linux 大牛,Netflix 高级性能架构师 Brendan Gregg 更新 Linux 性能调优工具的博文,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性

三种Linux性能分析工具的比较

无论是在CPU设计.服务器研发还是存储系统开发的过程中,性能总是一个绕不过去的硬指标.很多时候,我们发现系统功能完备,但就是性能不尽如意,这时候就需要找到性能瓶颈.进行优化.首先我们需要结合硬件特点.操作系统和应用程序的特点深入了解系统内部的运行机制.数据流图和关键路径,最好找出核心模块.建立起抽象模型:接着需要利用各种性能分析工具,探测相关模块的热点路径.耗时统计和占比.在这方面,Linux操作系统自带了多种灵活又具有专对性的工具,此外一些厂家也开源了不少优秀的性能分析工具.下面就结合笔者最近

Java 性能分析工具

如何利用 JConsole观察分析Java程序的运行,进行排错调优 http://jiajun.iteye.com/blog/810150 如何使用JVisualVM进行性能分析 http://jiajun.iteye.com/blog/1180230 全功能的Java剖析工具(profiler) http://www.blogjava.net/mrzhangshunli/archive/2007/08/27/140088.html http://www.cnblogs.com/jayzee/p

linux下面的性能分析工具简介

iostat 命令详解 iostat用于输出cpu和磁盘I/O相关的统计信息.命令格式: Usage: iostat [ options ] [ <interval> [ <count> ] ] Options are: [ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } [ <devi

Java性能优化指南系列(二):Java 性能分析工具

进行JAVA程序性能分析的时候,我们一般都会使用各种不同的工具.它们大部分都是可视化的,使得我们可以直观地看到应用程序的内部和运行环境到底执行了什么操作,所以性能分析(性能调优)是依赖于工具的.在第2章,我强调了基于数据驱动的性能测试是非常重要的,我们必须测试应用的性能并理解每个指标的含义.性能分析和数据驱动非常类似,为了提升应用程序的性能,我们必须获取应用运行的相关数据.如何获取这些数据并理解它们是本章的主题.[本章重点介绍JDK中提供的性能分析工具] 操作系统工具及其分析 程序分析的起点并不