概述

很多朋友私信问关于linux有哪些性能监控工具,所以整理了这方面内容,下面分享下给大家。

工具功能概览

整理了一个关于监控工具及其功能的表。下面对这些工具单独详细介绍。

Linux性能监控工具

top

top命令会展示进程的实际活动。默认情况下,它会列出系统上所有cpu密集型任务,并且每5秒钟刷新一次列表。可以对PID(数值),生存时间(最新的排最前面),时间(累计时

间)以及常驻内存使用率和时间(进程启动开始占用cpu的时间)进行排序。

输出中的各列:

PID 进程号USER 进程所有者的名字。PRI 进程优先级NI nice级别SIZE 进程使用的内存(代码、数据和栈),kb单位RSS 物理RAM使用量,kb单位SHARE 和其它进程共享的内存,kb单位STAT 进程状态:S=睡眠,R=运行,T=停止或跟踪,D=不可中断的睡眠,Z=僵尸。%CPU CPU使用量。%MEM 物理内存用量TIME 进程使用的总CPU时间(从启动开始算)COMMAND 进程的命令行启动命令(包括参数)

vmstat

vmstat显示关于进程,内存,页,块I/O,traps和CPU的信息。vmstat既可以展示平均值,也

可以是实时数据。通过提供采样频率和采样时间就可以开启vmstat的采样模式。

各列的含义如下:

进程

r:等待执行时间的进程数b:在不可中断睡眠中的进程数

内存

swpd:已使用的虚拟内存量free:空闲内存量buff:作为缓冲的内存cache:作缓存的内存

Swap

si:从交换分区写到内存的量so:从内存写到交换分区的大小

IO

bi:发往块设备的数目(blocks/s)bo:从块设备接收的块数目 (blocks/s)

System

in:每秒钟的中断次数,包括时钟cs:每秒的上下文切换次数

CPU(总CPU时间的百分比):

us:运行非内核代码的时间(用户时间,包括nice时间)sy:运行内核代码的时间(系统时间)id:空闲时间,早先的Linux2.5.41版本,包含了I/O等待时间wa:等待IO的时间,早先的Linux2.5.41版本,这个值为0

uptime

uptime 命令可以用来查看服务器运行了多长时间,有多少用户登录在服务器上,以及服务器的平均负载。分别展示过去1分钟、5分钟和15分钟的系统瓶颈负载值。

平均负载最理想的值是1,意味着每个进程可以直接使用CPU,没有发生CPU周期丢失。不同系统的负载有很大差别。对单处理器工作站来说,1或2的负载值是勉强可以接受的,而在多

处理器服务器上,平均负载为8或者10的时候,系统依旧运行良好。

使用uptime或许可以找出服务器或网络的问题。例如,当网络服务运行不佳时,你就可以用uptime命令查看系统负载情况。如果负载不高,问题可能出现在你的网络中,而不是服务器系统上。

ps 和 pstree

在系统分析中,ps和pstree是最基础的命令,ps有三种不同的命令选项,UNIX、BSD和GNU

风格。

ps命令展示所有进程列表。top命令展示了进程活动,而且ps显示的信息更加详细。ps所显示

出来的进程数量取决于所使用的命令参数。简单的ps -A命令会列出所有的进程和他们各自的

PID,我们可以使用PID做更多的事情。在使用pmap,renice等工具的时候,就需要用到

PID。

在运行java应用的服务器上,使用ps -A命令可能一下子就把显示器全部占满了,很难清楚查

看运行进程的完整列表。在这个情况下,pstree命令可能就会派上用场,它把运行进程以树形

结构展示,把子进程合并展示(例如java线程)。

其它的命令选项:

-e 所有进程,和-A一样-l 显示长格式-F 额外的全格式,包括参数和选项。-H 显示进程等级-L 显示线程,可能带有LWP和NLWP列-m 在进程后面显示线程

使用如下命令可以看到详细的进程信息:

ps -elFL

输出的字段含义:

F 进程标志S 进程状态:S=睡眠,R=运行,T=停止或跟踪, D=不可中断的睡眠,Z=僵尸。UID 拥有进程的用户名字。PID 进程IDPPID 父进程IDLWP LWP号(light weight process,or thread,轻量级进程,或线程)。c 处理器使用的百分比。NLWP 进程中的lwps(线程)个数。PRI 进程优先级NI nice级别(进程是否通过nice改变优先级,见下文)ADDR 进程地址空间(例子中没展示)SZ 进程使用的内存大小(代码+数据+栈) ,单位kb。WCHAN 睡眠进程的内核函数名字,如果进程在运行,显示“-”,如果显示为“*”,则表示是多线程。RSS 驻留内存大小,任务所使用的非swap物理内存大小,单位是kb。PSR 分配给进程的处理器个数。STIME 命令开始时间TTY 终端TIME 进程从启动开始,使用CPU的总时间CMD 开启任务的命令(包含参数)

free

free命令显示了系统所有已用和可用内存(包括swap)量。也包括被内核使用的缓冲和缓存

信息。

使用free命令的时候,记住Linux内存架构和虚拟内存管理器的工作方式。空闲内存是受限使

用的,使用swap也不表示出现了内存瓶颈。

下图展示了free命令的基本原理。

free命令基本原理

free命令的常用参数:

-b,-k,-m,-g 以字节b,千字节kb,兆字节mb和吉字节gb为单位展示。

-l 显示详细的高低内存统计

-c 输出free的次数

Memory used in a zone

iostat

iostat命令显示从系统启动依赖的平均CPU时间(和uptime类似)。它会生成服务器磁盘子系

统的活动报告:CPU和磁盘设备利用情况。使用iostat找出详细的I/O瓶颈,进行性能优化,详

见“找到磁盘瓶颈”一节内容。iostat是sysstat包里的一个组件。

CPU使用报告有4个部分:

%user 显示CPU在用户级执行应用程序所花时间的百分比。

%nice 显示带有nice优先级的用户级程序占用的CPU时间百分比(详见“nice,renice一

节”)。

%sys 显示显示执行系统级(内核)任务所占用CPU时间的百分比。

%idle 显示CPU空闲的时间百分比。

设备使用报告包括如下部分:

Device 块设备的名字

tps 设备上的每秒传输次数(每秒的I/O请求数)。多个单I/O请求可以合成一个传输请

求,因为每个传输请求的大小可以是不一样的。

Blk_read/s,Blk_wrtn/s 每秒块读写显示了每秒从设备读或者写的数据。块也可以有不同的

大小。常见的是1024,2048和4096字节,这是取决分区大小。

sar

使用sar命令可以收集、展示和保存系统信息。sar命令由三个部分组成:sar,显示数据,sa1

和sa2,收集和存储数据。sar工具是sysstat包的一部分。

mpstat

mpstat是一个可以展示多处理器服务器上每个可用CPU活动信息的命令。所有CPU的平均活

动情况也会显示出来。mpstat也是sysstat包的一部分。

mpstat工具可以全面展示系统或者CPU的统计信息。通过给mpstat传递采样频率和采样次

数,可以模拟vmstat的使用。下图展示了通过mpstat -P ALL 来输出每个CPU的平均使用率。

numastat

在企业数据中心,非统一内存架构(Non-Uniform Memory Architecture ,NUMA)已经变成主流,例如IBM System x3950,然而,NUMA系统给调优带来了新的挑战。在NUMA出现之前,我们从来不需要关心内存的位置。幸好,企业Linux发行版为监测NUMA架构行为提供了工具。numastat命令提供本地和远程内存使用率和所有节点的整体内存配置。本地内存分配失败的信息在numa_miss一行展示,远程内存(shower memory)分配信息在numa_foregin一行展示。过度的使用远程内存会增加风险,可能导致整体性能下降。把进程绑定映射本地内存的节点会增加性能。

pmap

pmap命令会展示一个或多个进程正在使用的内存量。使用这一工具,你可以确定服务器上的

哪一个进程正在分配内存,还有是否这部分内存导致了内存瓶颈。更多信息,使用pmap -d 1选项。

最后一行显示的信息最为有用:

mapped 该进程映射到文件的内存量。writable/private 该进程使用的私有地址空间。shared 该进程和其它进程共享的地址空间量。

netstat

netstat 是最常用的工具之一,如果你从事网络工作,你应该对这个命令很熟悉。它会展示网

络相关的信息,例如socket使用,路由,接口,协议和其它网络统计。

有如下的基础选项:

-a 显示所有的socket信息-r 显示路由信息-i 显示网络接口统计-s 显示网络协议统计

Socket信息解释:

Proto socket使用的协议(tcp,udp,raw)。

Recv-Q 表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走,单位是字

节。

Send-Q 对方没有收到的数据或者说没有Ack的,还是本地缓冲区,单位字节。

Local Address socket的本地地址和端口。除非使用--numeric(-n)选项,socket地址会被

解释成主机名(FQDN),端口号会被转成相应的服务名字。

Foreign Address 远端socket的端口和地址。

State socket的状态。因为raw和UDP通常是没有状态的,所以这列可能是空白。

iptraf

iptraf监控和展示TCP/IP的实时流量。它可以根据各个session、接口、协议展示TCP/IP流量

统计。iptraf组件是由iptraf包提供。

iptraf给我们展示如下的报告:

IP流量监控:通过TCP连接的网络流量统计接口一般统计:网络接口流量统计接口详细统计:根据端口的网络流量统计统计分析:根据TCP/UDP端口和包大小的网络流量统计。局域网统计:根据网络2层地址的网络流量统计。

tcmpdump / ethereal

tcpdump和ethereal通常用来抓取和分析网络流量。这两个工具都会用到libpcap库来抓取包。

在混杂模式下,它们会监控网卡上的所有流量,并且抓取所有网卡上收到的分片。为了抓取

所有包,这些命令应该使用超级用户权限执行,以便开启网卡混杂模式。

你可以使用这些工具来找到和网络相关的问题。可以发现TCP/IP重传,滑动窗口大小变化,

名字解析问题、网络错误配置等。记住,这些工具只能监控所有到达网卡的分片,而不是所

有的网络流量。

1、tcpdump

tcpdump是一个简单和强大的工具。它拥有基本的协议分析能力,可以获得网络上的大体情

况。tcpdump可以使用很多选项和扩展表达式来过滤要抓取的包。入门可以看看如下的几个选项:

-i 指定网络接口-e 打印数据链路层头-s 抓取每个包的字节-n 避免DNS解析-w 写入文件-r 从文件读取-v,-vv,-vvv 详细输出

抓取过滤器的表达式:

关键字:

源目主机,源目端口,tcp,udp,icmp,源目网络等等

联合逻辑使用

非 ('!'或者'not')与 ('&&'或者'and')或 ('||'或者'or')

DNS查询包

2、ethereal

ethereal有和tcpdump相似的功能,但是更加复杂,并且拥有更高级的协议分析和报告能力。

它还拥有一个GUI接口和ethereal命令行界面。

和tcpdump类似,ethereal也可以使用过滤抓取,从而缩小抓取分片的范围。如下是一些常用

的表达式。

IP

ip.version ==6 and ip.len > 1450ip.addr == 129.111.0.0/16ip.dst eq www.example.com and ip.src == 192.168.1.1not ip.addr eq 192.168.4.1

TCP/UDP

tcp.port eq 22tcp.port == 80 and ip.src == 192.168.2.1tcp.dstport == 80 and (tcp.flags.syn == 1 or tcp.flags.fin == 1)tcp.srcport == 80 and (tcp.flags.syn == 1 and tcp.flags.ack == 1)tcp.dstport == 80 and tcp.flags == 0x21

应用层

http.request.method == "POST "smb.path contains SERVERSHARE

nmon

Nigel's Monitor简称nmon,是由Nigel Griffiths开发的监控Linux系统性能的常用工具。由于nmon能监控多个子系统的性能信息,所以,可以把它作为性能监控的唯一工具。通过nmon可以获取的信息有:处理器利用率、内存利用率、运行队列信息、磁盘I/O统计和网络I/O统计,页活动信息和进程指标。

nmon输出的CSV文件可以导入电子表格应用中,生成可视化图形报告,要使用该功能,启动nmon的时候需要带上-f选项。例如使用如下命令,让nmon生成30秒钟为频率,总时长1小时的报告。

# nmon -f -s 30 -c 120

strace

strace命令会拦截和记录进程的系统调用或进程接收到的信号。这是一个有用的诊断、教学和

调试工具。它在解决程序遇到的问题方面很有价值。

使用时,需要指定要监控的进程ID:

strace -p

Proc文件系统

proc文件系统不是真实的文件系统,但是它真的十分有用。它不是存储数据的;而是提供运

行内核的监控和操作接口。proc文件系统让管理员可以监控和修改运行中的内核。下图展示

了一个简单的proc文件系统。大多数Linux性能工具都要依赖于/proc提供的信息。

proc文件系统下的信息和布局:

/proc目录下的文件

/proc根目录下的各种文件里面包含相关系统的统计。你可以找到Linux工具使用的信息源,例如vmstat和cpuinfo文件。

数字1到X

各个数字的子目录指向的是运行进程或者它们的进程ID(PID)。目录结构总是已PID 1开始,指向的是init进程,然后是系统上运行的各个PID。每个数字子目录下保存进程相关的统计信息。例如进程映射的虚拟内存。

acpi

ACPI意思是高级配置与电源接口(advanced configuration and power interface),,受到大多数现代桌面和笔记本系统支持。由于ACPI主要是PC技术,所以在服务器上通常是禁用状态。

总线(bus)

这个子目录包含总线子系统的信息,例如PCI总线或者系统USB接口。

irq

irq目录包含系统中断的信息。这个目录下的每个子目录代表一次中断,也可能是一个附加设备,例如网卡。在irq子目录下,你可以修改一个给定中断的CPU关联(affinity)。

net

网络子目录下包含网络接口的原始统计数据,例如收到的多播包或接口的路由。

scsi

scsi子目录包含系统上关于SCSI子系统的信息,例如附加设备或者驱动调整。

sys

在sys子目录下,是可调整的内核参数,例如虚拟内存管理器或者是网络栈的行为。

tty

虚拟终端和附加的物理设备信息都包含在tty子目录中

篇幅有限,关于linux性能监控工具就大概介绍到这了,大家有空可以自己测试下,后面会分享更多linux方面的内容,感兴趣的朋友可以关注下!!

局域网网络流量监控_LINUX常见性能监控工具总结相关推荐

  1. 局域网网络流量监控_Linux网络安全运维:网络流量监控与分析工具Ntop和Ntopng

    一次性付费进群,长期免费索取教程,没有付费教程. 进微信群回复公众号:微信群:QQ群:460500587  教程列表 见微信公众号底部菜单 |  本文底部有推荐书籍  微信公众号:计算机与网络安全 I ...

  2. 局域网网络流量监控_【干货】Linux网络安全运维:网络流量监控与分析工具Ntop和Ntopng...

    本文授权转载自微信公众号:计算机与网络安全,转载请联系授权.对于单台服务器网络故障的排查,iftop工具可以轻松实现,但是在监控一个庞大的服务器网络,并且要分析每台主机以及端口的网络状态时,iftop ...

  3. 局域网网络流量监控_18个监控网络带宽的Linux命令行工具

    本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量分开来显示.一些命令可以显示单个进程所使用的带宽 ...

  4. 网络流量监控及流量异常检测

    当今的企业面临着许多挑战,尤其是在监控其网络基础设施方面,需要确保随着网络规模和复杂性的增长,能够全面了解网络的运行状况和安全性.为了消除对网络性能的任何压力,组织应该采取的一项重要行动是使用随组织一 ...

  5. 网络分流器-网络分流器TAP网络流量监控

    戎腾网络分流器作为网络安全重要装备,是整个网络安全领域网络监控前端最关键的装备! 今天我们详解网络流量监控! 网络分流器TAP ATCA网络分流器支持多用户高密度 网络分流器DPI检测五元组过滤 网络 ...

  6. 基于linux网络流量监控与分析软件的设计与实现shell,Shell图形化监控网络流量

    网络流量的监控工具有很多,如:Mrtg.Cacti.Zabbix等等,他们都有着各自的特点,不同的侧重,只为适合不同的应用场景的各种特殊需求.除了网络流量监控工具以外,还有Nagios这样的监控主机状 ...

  7. 网络流量监控-多合一网络数据包代理工具

    网络流量监控-多合一网络数据包代理工具 随着5G.SD-WAN.虚拟化和物联网等转型技术的应用,网络变得比以往更加复杂.今天对服务提供商和企业的数据要求是,他们必须能够实时查看所有的数据和应用,以保护 ...

  8. android 应用性能监控软件,App性能监控工具,卡顿

    (609条消息) android 应用性能监控软件,App性能监控工具_weixin_39940154的博客-CSDN博客 APP性能监测的各种工具 - ClareBaby01 - 博客园 (cnbl ...

  9. Linux 网络流量监控利器 iftop 中文入门指南

    iftop 是什么 在 Linux 系统下即时监控服务器的网络带宽使用情况,有很多工具,比如 iptraf.nethogs 等等,但是推荐使用小巧但功能很强大的 iftop 工具. iftop 是 L ...

  10. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1, #cat /proc/stat/  信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2, #vmstat –s   或者 #vmstat    虚拟内存统 ...

最新文章

  1. [翻译]Keeping your JavaScript out of the global scope
  2. Redis 是属于多线程还是单线程?
  3. html cols跨两列,html – CSS奇怪,甚至有2个cols
  4. 搭载MIUI for Watch,支持eSIM独立通话!小米手表首发1299元起
  5. PGSQL-通过SQL语句来计算两个日期相差的天数
  6. 【通信】基于matlab多径衰落信道仿真【含Matlab源码 338期】
  7. 正则表达式匹配第一个单个字符
  8. 最新去广告扒站仿站网源码
  9. 去除xp系统计算机多余的系统,WinXP电脑如何清理垃圾?
  10. 童年学习机器人的 5 大好处
  11. Understanding and Diagnosing Visual Tracking Systems
  12. 基于timestamp和nonce的防止重放攻击方案
  13. [海边的卡夫卡.pdf
  14. 数据挖掘利器 selenium实战案例--论文数据挖掘与可视化分析(下)
  15. 基于树状图的族谱程序
  16. idea打开多个文件多排显示
  17. Windows遇到的图片查看问题。
  18. 用二分查找在一个有序数组中找数
  19. 滴滴客服解决方案平台建设实践
  20. Ubuntu中安装Matlab2010

热门文章

  1. Vue学习笔记(利用网易云API实现音乐播放器 实例)
  2. SVN分支合并冲突解决
  3. plsqldev解决中文乱码问题
  4. 解决plsqldev连接oracle数据库出现ORA-12154:TNS:无法解析指定的连接标识符
  5. unity开发罗技G29方向盘(制作操作汽车)
  6. java查看jar包依赖_java项目开发中如何查找到项目依赖的jar包?
  7. LOUVAIN——社交网络挖掘之大规模网络的社区发现算法
  8. louvain算法python_一种基于Louvain算法的社区发现方法及系统与流程
  9. networkx 有向图强连通_基于networkx分析Louvain算法的社团网络划分
  10. Linux内核网络编程