Centos查看网卡、CPU、内存等使用率

# watch more /proc/net/dev

性能分析和监控工具

uptime
dmesg | tail
vmstat 1
mpstat -P ALL 1
pidstat 1
iostat -xz 1
free -m
sar -n DEV 1
sar -n TCP,ETCP 1
top

0x01:网络IO

1、sar -n DEV 1 3 监控网卡IO
2、ethtool 网卡名 查看网卡的最大速率等参数信息
3、netstat -nat | awk ‘FNR>2{print $NF}’ | sort | uniq -c 查看系统TIME_WAIT状态连接数
4、查看DND信息dig命令

dig baidu.com # 输出host的cname记录与A记录,可以看到ip地址和使用的DNS服务器信息,添加` +short`可以简化输出
dig -x 204.152.184.167 +short # 用 -x的选项查找IP地址的主机名
dig @ns1.google.com www.google.com 指定查询的DNS server

tcpdump

tcpdump -D # 显示可以抓取的所有网络接口
# 抓取9100端口,网卡xgbe0的TCP网络包信息,保存到aaa.pcap
tcpdump tcp port 9100 -i xgbe0 -nn -s 0 -XX -w aaa.pcap# 指定目的或者源ip,可以使用and,or
tcpdump -i eth0 src and dst 172.16.11.1 and port 80 -nn -s 0 -XX -w aaa.pcap# 指定主机
tcpdump -i eth0 host 172.16.11.1 and port 80 -nn -s 0 -XX -w aaa.pcap# 抓取http包,一般是eth0,xgbe0,可以加上port 80作为条件,这里是指本机接收http请求的80端口,发出端口为随机
tcpdump -i xgbe0 -nn -s 0 -XX -w yq41.pcap

wireshark分析网络包
1、tcpdump保存的文件是二进制的文件,需要下载到本地用wireshark查看
2、过滤器:tcp.stream
3、抓包参数和结果解析

CPU

1、mpstat -P ALL 1 1 查看cpu占用率波动情况;也可以top,然后1
2、taskset绑定进程或者线程到指定CPU的核

taskset -cp pid   查看进程所属核
taskset -acp pid   查看进程及所有线程的所属核
taskset -pc 3 pid   表示将进程pid绑定到第3个核上
taskset -a -pc 3 pid  表示将进程pid(包括所有线程)绑定到第3个核上
taskset -cp 1,2,3 pid

pidstat 用于监控全部或指定进程的cpu、内存、线程、设备IO等系统资源的占用情况

# 查看CPU
pidstat -p pid 3 3
# 查看进程内存状态,用ps效果一样,RSS单位为KB
pidstat -r -p 26716 3 3
# 查看进程磁盘IO
pidstat -d -p 26716 3 3
# 查看进程上下文切换
pidstat -wt -p 26716 3 3
# 查看进程中的线程信息
pidstat -t -p 26716 3 3

vmstat 2 1 查看系统上下文切换

内存

top

CPU使用状况 1.02%us, 0%sy, 0%ni, 98.98%id, 0%wa, 0%irq, 0%softirq

us:用户空间占用CPU百分比
sy:内核空间占用CPU百分比
ni:用户进程空间内改变过优先级的进程占用CPU百分比
id:空闲CPU百分比
wa:等待输入输出的CPU时间百分比
hi:硬件中断
si:软件中断
st:实时

1、top命令常用参数
2、P,M分别是按cpu和内存排序;mac系统使用o + 列名
3、sar -u 1 3 监控CPU状态
4、top -p 345 查看指定pid=345的进程,在mac中用-pid代替-p
5、%cpu参数不可靠,需要1查看每个CPU的使用率才可靠
free

-g```:以GB为显示单位,也可以-m以MB为显示单位

name |    total   |    used    |   free  |   shared  |  buffers |cached
--- | --- | --- | --- | --- | --- | ---
Mem: | 125 | 125 | 0 | 0 | 0 | 109 |
-/+ buffers/cache: | | 15(上一行的used - buffers - cached) | 110(上一行的 free + buffers + cached)
Swap: | 0 | 0 | 0对操作系统来讲,为了内存利用率最大化,会把剩余内存申请为cached,所以系统运行时间长了,cached就会比较大,对于频繁读写的系统就更加明显。used 和 free都是Mem的参数,所以 buffers/cached这两项对于操作系统来讲都是已经被使用的内存,所以呢 free的就比较少;而对于应用程序来说呢,buffers/cached等同于可用的内存,因为buffers/cached可提高程序执行的性能,当程序使用内存时,buffers/cached很快就会被使用。所以从应用程序的角度来看,应以(-/+ buffers/cached)的free 和 used为主,即我们主要与他相关的free和used就可以了我们在观察Linux的内存使用情况时,只要没发现用swap的交换空间,就不必担心自己的内存太少。如果常常看到swap用了很多,那么你就要考虑加物理内存了,可以用`vmstat`查看swap IO状况。这也是在Linux服务器上看内存是否够用的标准。因为swap用的多,说明OS把本应该存在物理内存中的部分内存页调度到了磁盘,腾出空间给当前进程使用,等到其他进程运行时才会把这部分内存页再次调度到物理内存。#### buffer/cache/shared memory区别与联系#### pmap
1. 查看进程内存分布状况,可以用来分析线程堆栈:`pmap -d 12345 # 12345 是进程号`#### 清理linux cache
Kernels 2.6.16 and newer provide a mechanism to have the kernel drop the page cache and/or inode and dentry caches on command, which can help free up a lot of memory.This is a non-destructive operation and will only free things that are completely unused. Dirty objects will continue to be in use until written out to disk and are not freeable. If you run "sync" first to flush them out to disk, these drop operations will tend to free more memory.To free pagecache:# echo 1 > /proc/sys/vm/drop_cachesTo free dentries and inodes:# echo 2 > /proc/sys/vm/drop_cachesTo free pagecache, dentries and inodes:echo 3 > /proc/sys/vm/drop_caches> 遇到报错:```tcpdump: can't create rx ring on packet socket: cannot allocate memory```, 可以使用该命令清除cache### 磁盘IO#### 磁盘IOPS和Throughput1. 磁盘的 IOPS,也就是在一秒内磁盘进行多少次 I/O 读写。磁盘的吞吐量,也就是每秒磁盘 I/O 的流量,即磁盘写入加上读出的数据的大小。每秒 I/O 吞吐量= IOPS* 平均 I/O SIZE
2. 随机读写频繁的应用,如OLTP(Online Transaction Processing),IOPS是关键衡量指标;对于大量顺序读写的应用,如VOD(Video On Demand),则更关注吞吐量指标。#### 影响IOPS的因素1. 第一个**寻址时间**,考虑到被读写的数据可能在磁盘的任意一个磁道,既有可能在磁盘的最内圈(寻址时间最短),也可能在磁盘的最外圈(寻址时间最长),所以在计算中我们只考虑平均寻址时间,也就是磁盘参数中标明的那个平均寻址时间,这里就采用当前最多的10krmp硬盘的5ms。
2. 第二个**旋转延时**,和寻址一样,当磁头定位到磁道之后有可能正好在要读写扇区之上,这时候是不需要额外额延时就可以立刻读写到数据,但是最坏的情况确实要磁盘旋转整整一圈之后磁头才能读取到数据,所以这里我们也考虑的是平均旋转延时,对于10krpm的磁盘就是(60s/10k)*(1/2) = 2ms。
3. 第三个**传送时间**,磁盘参数提供我们的最大的传输速度,当然要达到这种速度是很有难度的,但是这个速度却是磁盘纯读写磁盘的速度,因此只要给定了单次 IO的大小,我们就知道磁盘需要花费多少时间在数据传送上,这个时间就是IO Chunk Size / Max Transfer Rate。#### I/O 读写的类型大体上讲,I/O 的类型可以分为:读 / 写 I/O、大 / 小块 I/O、连续 / 随机 I/O, 顺序 / 并发 I/O。在这几种类型中,我们主要讨论一下:大 / 小块 I/O、连续 / 随机 I/O, 顺序 / 并发 I/O。##### 大 / 小块 I/O这个数值指的是控制器指令中给出的连续读出扇区数目的多少。如果数目较多,如 64,128 等,我们可以认为是大块 I/O;反之,如果很小,比如 4,8,我们就会认为是小块 I/O,实际上,在大块和小块 I/O 之间,没有明确的界限。##### 连续 / 随机 I/O连续 I/O 指的是本次 I/O 给出的初始扇区地址和上一次 I/O 的结束扇区地址是完全连续或者相隔不多的。反之,如果相差很大,则算作一次随机 I/O连续 I/O 比随机 I/O 效率高的原因是:在做连续 I/O 的时候,磁头几乎不用换道,或者换道的时间很短;而对于随机 I/O,如果这个 I/O 很多的话,会导致磁头不停地换道,造成效率的极大降低。##### 顺序 / 并发 I/O从概念上讲,并发 I/O 就是指向一块磁盘发出一条 I/O 指令后,不必等待它回应,接着向另外一块磁盘发 I/O 指令。对于具有条带性的 RAID(LUN),对其进行的 I/O 操作是并发的,例如:raid 0+1(1+0),raid5 等。反之则为顺序 I/O。#### [磁盘I/O那些事](https://tech.meituan.com/about_desk_io.html)

Linux下的IO监控与分析

  1. iostat -xm 1 1: 监控CPU状态和磁盘IO
  2. iostat命令输出详解

系统端口占用信息和进程信息

  • lsof | grep pid/pname查看进程信息
  • lsof -i:port查看端口号port使用的进程号和连接情况
  • lsof -i@ip:port使用@host:port来显示指定到指定主机的连接
  • lsof -iTCP显示TCP连接
  • lsof -c abc显示 abc 进程现在打开的文件
  • lsof -p 12看进程号为 12 的进程打开了哪些文件
  • netstat -np/c/atux | grep pid/port/pname查看进程号所占用的端口号和端口占用情况
  • netstat -n | grep tcp | grep 侦听端口 | wc -l : 监听端口连接数
  • netstat -nat | grep 3306 -c : 查看数据库连接使用数目
  • ps aux只能看到pid等信息,不能看到端口号
  • ps -eLf | grep java | wc -l: 监控java进程的线程数, 或者ps -eLf | grep 27955 -c
  • ps -eo pid,pcpu | sort -rn -k 2 | less 查看CPU高占用的进程pid
  • ps H -eo pid,tid,pcpu | sort -rn -k 3 | less 查看CPU高占用的pid及线程id
  • cat /proc/进程号/task/线程号/status 查看线程具体信息
  • printf "%x\n" 7444 线程id转成十六进制,可以用于jstack dump信息的搜索id
  • 远程登录 telnet hostname

sar命令查看网络、磁盘、CPU、内存信息

sar - Collect, report, or save system activity information.

参数说明

-A 汇总所有的报告
-a 报告文件读写使用情况
-B 报告附加的缓存的使用情况
-b 报告缓存的使用情况
-c 报告系统调用的使用情况
-d 报告磁盘的使用情况
-g 报告串口的使用情况
-h 报告关于buffer使用的统计数据
-m 报告IPC消息队列和信号量的使用情况
-n 报告命名cache的使用情况
-p 报告调页活动的使用情况
-q 报告运行队列和交换队列的平均长度
-R 报告进程的活动情况
-r 报告没有使用的内存页面和硬盘块
-u 报告CPU的利用率
-v 报告进程、i节点、文件和锁表状态
-w 报告系统交换活动状况
-y 报告TTY设备活动状况

系统平均load负载

sar -q 2 2

参数:

runq-sz:运行队列的长度(等待CPU时间片来运行的进程数)
plist-sz:进程列表中进程(processes)和线程(threads)的数量
ldavg-1:最后1分钟的系统平均负载 ldavg-5:过去5分钟的系统平均负载
ldavg-15:过去15分钟的系统平均负载

查看内存信息

sar -r 1 3

参数解释:

kbmemfree:剩余可用内存、单位K
kbmemused:已用内存、以K 为单位、该值不考虑内核自身所使用的内存
%memused:已用内存百分比
kbbuffers:已用buffer(内核所用)、单位K
kbcached:已用cache(内核所用)、单位K
kbswpfree:剩余Swap、单位K
kbswpused:已用Swap、单位K
%swpused:已用Swap百分比
kbswpcad:被缓存的Swap、单位K

内存分页统计

sar -B 5 3

参数解释:

pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)
pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)
fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
majflt/s:每秒钟产生的主缺页数.

系统交换活动状况

sar -w 1 3

参数:

pswpin/s:每秒系统换入的交换页面(swap page)数量
pswpout/s:每秒系统换出的交换页面(swap page)数量

CPU信息

sar -u 3 5

参数解释:

%user:显示在用户级别(application)运行使用 CPU 总时间的百分比
%nice:显示在用户级别,通过nice改变了进程调度优先级的进程,在用户模式下消耗的CPU时间的比例
%system:在内核级别(kernel)运行所使用 CPU 总时间的百分比
%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比
%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比

1)若 %iowait 的值过高(大于0的长时间值),表示硬盘或者网络存在I/O瓶颈
2)若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
3)若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU

磁盘信息

sar -b 3 5
tps:每秒磁盘的 I/O 传输总量
rtps:每秒从磁盘读出的数据总量
wtps:每秒向磁盘写入的数据总量
bread/s:每秒从磁盘读出的数据量,单位为 块/s
bwrtn/s:每秒向磁盘写入的数据量,单位为 块/s

网络IO

sar -n DEV 2 3

监控TCP连接状态

sar -n TCP/ETCP 1
active/s: 每秒本地发起的TCP连接数,即服务器通过connect调用创建的TCP连接数
passive/s: 每秒远程发起的TCP连接数,即服务器通过accept调用创建的连接数
retrans/s: 每秒重传数量
### Linux /proc目录
在Linux系统“一切都是文件”的思想贯彻指导下,所有进程的运行状态都可以用文件来获取。系统根目录/proc中,每一个数字子目录的名字都是运行中的进程的PID,进入任一个进程目录,可通过其中文件或目录来观察进程的各项运行指标,例如task目录就是用来描述进程中线程的

可以通过下面的方法获取某进程中运行中的线程数量(PID指的是进程ID)

ls /proc/PID/task | wc -l

获取进程相关信息

cat /proc/PID/status

获取内存信息

vmstat -s -S M
cat /proc/meminfo

CPU信息

cat /proc/cpuinfo

调整TCP receive窗口大小

浅谈TCP参数优化

/sbin/sysctl net.ipv4.tcp_rmem
cat /proc/sys/net/ipv4/tcp_rmem

参考链接 :

https://www.fujieace.com/linux/cpu.html

常用Linux网络/内存/磁盘分析工具 : https://mp.weixin.qq.com/s/PPIxqp6HZ7hi-qgNzuEefg

常用Linux网络/内存/磁盘分析工具相关推荐

  1. java内存溢出分析工具:jmap使用实战

    java内存溢出分析工具:jmap使用实战 在一次解决系统tomcat老是内存撑到头,然后崩溃的问题时,使用到了jmap.  1 使用命令  在环境是linux+jdk1.5以上,这个工具是自带的,路 ...

  2. 【php毕业设计】基于php+mysql+apache的网络数据包分析工具设计与实现(毕业论文+程序源码)——网络数据包分析工具

    基于php+mysql+apache的网络数据包分析工具设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于php+mysql+apache的网络数据包分析工具设计与实现,文章末尾附有本毕业设 ...

  3. android分析内存工具,Android Studio内存泄漏分析工具汇总

    Android Studio内存泄漏分析工具汇总 时间:2017-04-25     来源:Android开发学习网 在Android开发过程中,让人头疼的就是内存泄露问题了,很小的一个错误都会引起内 ...

  4. 基于php的网络数据包分析工具的设计与开发

    摘 要 当前,随着信息化发展,网络安全问题日渐突出,网络攻击日益泛滥,所以网络信息安全就变的非常重要.网络主机必须有足够的安全措施,否则网络的价值就会贬值.本系统的开发就是为了给网络使用者提供一个有用 ...

  5. tMemMonitor (TMM) ----- 100%正确的内存泄漏分析工具

    C/C++由于灵活.高效的优点一直以来都是主流的程序设计语言之一,但是其内存的分配与释放均由程序员自己管理,当由于疏忽或错误造成程序未能释放不再使用的内存时就会造成内存泄漏.在大型.复杂的应用程序中, ...

  6. 内存泄漏分析工具tMemMonitor (TMM)使用简介

    内存泄漏分析工具tMemMonitor (TMM)使用简介 C/C++由于灵活.高效的优点一直以来都是主流的程序设计语言之一,但是其内存的分配与释放均由程序员自己管理,当由于疏忽或错误造成程序未能释放 ...

  7. 网络数据包分析工具列表

    此列表内容主要来自于某书的附录部分. 1.WireShark,这方面神器级工具,不赘述,自己好好学吧. 2.tcpdump和windump,完全基于文本的数据包捕获和分析 3.Cain&Abe ...

  8. 磁盘分析工具Ncdu的简单使用和体验

    为什么80%的码农都做不了架构师?>>>    概述 因为我使用的是120g的固态硬盘,所以我的本地就不能存很多东西,经常要删除很多东西,所以看每个目录的大小就很重要,下面推荐一个磁 ...

  9. pcap文件解析工具_【免费毕设】PHP网络数据包分析工具的设计与开发(源代码+论文)...

    点击上方"蓝字"关注我们目录 系统设计 网络数据包分析系统的设计 整个网络数据报分析工具采用模块化的设计思想,原因是许多程序太长或太复杂,很难写在单一单元中.如果把代码分为较小的功 ...

最新文章

  1. C++的多个有序链表合并
  2. 【深度学习】Tensorflow搭建卷积神经网络实现情绪识别
  3. Window 2003证书服务器迁移到Windows 2008 R2
  4. 使用docker commit将修改后的容器保存为镜像及其使用注意事项
  5. 程序员的生存发展和出路
  6. PHP中的语法特点小结
  7. Struts2使用Interceptor实现权限控制的应用实例详解
  8. Linux笔记-SVN(subversion)创建仓库及客户端连接及文件回滚
  9. Python笔记(5) 变量类型
  10. Go语言教程,电子书,PDF格式
  11. A Byte of Python 笔记(12)python 标准库:sys、os,更多内容
  12. Haar特征计算过程【DataWhale学习记录】
  13. MySQL8.0零基础入门
  14. Android存储子系统流程--vold
  15. 小程序setData动态传递key
  16. python窗口大小动态变化_如何在tkinter中动态调整窗口大小以“自动调整”其内容?...
  17. ESP32 开发之旅⑪ UDP服务
  18. 我的世界mod整合包java_我的世界1.10.2mod大全+整合包+合集
  19. cuda i am coming!
  20. 言论-摘自《读者》2006年第11期

热门文章

  1. KDD CUP 2018 前4 名解决方案公开: AI预测空气质量
  2. java缓存管理器_使用@EnableCaching的Spring Boot默认缓存管理器
  3. Python ln_虚拟机中单机Spark (Python版)安装
  4. python刚开始什么都不能_关于python的初步学习
  5. python实现不重复排列组合_Python使用combinations实现排列组合的方法
  6. 微型计算机系统中 麦克风属于,模块1-2 计算机基础知识测验题目(50小题)
  7. Python学习入门基础教程(learning Python)--4.3 Python的for嵌套
  8. Android进阶:性能优化篇 Android进阶:性能优化篇
  9. laravel整合workerman做聊天室
  10. thinkphp5的Illegal string offset 'id'错误