dstat
使用示例
# dstat
安装完成后, 执行 dstat 命令, 默认情况它会收集-cpu-,-disk-,-net-,-paging-,-system-的数据, 一秒钟收集一次. 默认输入dstat等于输入了dstat -cdngy 1或dstat -a 1. 推荐使用 date && dstat -tclmdny 60 一分钟监视一次(注意调节显示的宽度, 或去掉-t选项).
我们常用的参数
-c, --cpu enable cpu stats 显示cpu的情况
-d, --disk enable disk stats 显示硬盘的情况
-l, --load enable load stats 显示系统的负载情况
-m, --mem enable memory stats 显示内存的情况
-n, --net enable network stats 显示网络的情况
-p, --proc enable process stats 显示进程的情况
-s, --swap enable swap stats 显示swap的情况
-y, --sys enable system stats 显示系统的情况
--output file write CSV output to file 写到csv文件中
默认情况下dstat是每秒钟就收集数据一次,可以修改一下让它每30秒收集一次
dstat -cdlmnpsy 30
dstat -cndymlp -N total -D total 5 25
top
top - 11:09:48 up 6 min, 2 users, load average: 0.09, 0.38, 0.24
Tasks: 213 total, 1 running, 212 sleeping, 0 stopped, 0 zombie
%Cpu(s): 6.4 us, 6.9 sy, 1.0 ni, 84.5 id, 1.3 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 1024708 total, 724056 used, 300652 free, 43336 buffers
KiB Swap: 1046524 total, 0 used, 1046524 free. 291540 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1062 root 20 0 42800 6268 5656 S 6.3 0.6 0:00.66 vmtoolsd
1359 root 20 0 152696 38144 18172 S 6.3 3.7 0:04.40 Xorg
2621 root 20 0 127824 27712 23344 S 6.3 2.7 0:01.52 gnome-termi+
1 root 20 0 4472 3664 2576 S 0.0 0.4 0:03.98 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.12 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
可以实时显示系统中各个进程的占用情况。
上部分列出了系统整体的统计信息:任务、CPU、内存、交换区等信息。
下部分列出了进程的详细情况。
uptime
运行结果:16:32:01 up 8 days, 5:55, 3 users, load average: 0.00, 0.00, 0.00
当前在线用户 2个
平均负载:一定时间内CPU任务队列的平均长度,是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息。
上面3个数分别是“最近一分钟系统的负载(0.00)、最近5分钟系统的负载(0.01)、最近15分钟系统的负载(0.05)”
分析思路:如果load average指标的5分钟以及15分钟的值长 大于 CPU个数*CPU核数*0.7,
并且us长时间比较高,说明CPU不够用,需要升级CPU或调整程序的算法降低CPU的使用率。
netstat
(Netstat是一个用于监控进出网络的包和网络接口统计的命令行工具。它是一个非常有用的工具,
系统管理员可以用来监控网络性能,定位并解决网络相关问题。)
可以显示各种网络相关信息,比如各个连接的类型、状态等。
比如显示所有状态为“TIME_WAIT”的连接:netstat -ae|grep "TIME_WAIT"
vmstat
常见参数:vmstat 2 6 命令将会每2秒中执行一次vmstat,执行6次后自动停止执行
vmstat -t 带-t参数执行vmstat命令,该命令将会在每一行输出后都带一个时间戳
vmstat -s vmstat命令的-s参数,将输出各种事件计数器和内存的统计信息。
vmstat -d vmstat的-d参数将会输出所有磁盘的统计信息。
vmstat -S M 1 5 vmstat的-S和-M参数(大写和MB)将会以MB为单位输出。vmstat默认以KB为单位输出统计信息。
可以用来监控虚拟内存。可对操作系统的虚拟内存、IO、CPU等多个指标的整体情况进行监视。
Linux系统的内存分为物理内存和虚拟内存两种。物理内存是真实的,也就是物理内存条上的内存。
而虚拟内存则是采用硬盘空间补充物理内存,将暂时不使用的内存页写到硬盘上以腾出更多的物理
内存让有需要的进程使用。当这些已被腾出的内存页需要再次使用时才从硬盘(虚拟内存)中读回内存。
这一切对于用户来说是透明的。通常对Linux系统来说,虚拟内存就是swap分区。
运行结果:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 10336 287032 16856 266904 0 9 556 278 155 452 15 4 79 2 0
内存方面:
swpd:已经使用的交换内存(kb)
free:空闲的物理内存(kb)
buff:用作缓冲区的内存数(kb)
cache:用作高速缓存的内存数(kb)
si、so 两列,表示磁盘和内存之间交换的频繁程度。
分析思路:
如果 si、so 数值长期很大并且free长期很小,表示物理内存不能满足需要,也就是内存不足。
由于磁盘的性能比内存是慢很多的,所以如果存在大量的页面交换,那么系统的性能必然会受到很大影响。
CPU方面:
r:展示了正在执行和等待cpu资源的任务个数。当这个值超过了cpu个数,就会出现cpu瓶颈。
us:用户CPU时间。
sy:系统CPU时间。
id:空闲CPU时间。
wa:等等I/O CPU时间。
us+sy+id+wa=100%
分析思路:
如果 r 经常大于4,且id经常小于40,表面CPU的负荷很重。
htop
top的升级版
ss
glances
安装时报错;(sudo vim /etc/resolv.conf添加nameserver 8.8.8.8)=>apt update
glances -t 5 时间间隔设为 5 秒
Glances 提供了很多快捷键,可以在它运行时用来查找输出信息。
下面是一些常用的热键列表:
m : 按内存占用排序进程
p : 按进程名称排序进程
c : 按 CPU 占用率排序进程
i : 按 I/O 频率排序进程
a : 自动排序进程
d : 显示/隐藏磁盘 I/O 统计信息
f : 显示/隐藏文件系统统计信息
s : 显示/隐藏传感器统计信息
y : 显示/隐藏硬盘温度统计信息
l : 显示/隐藏日志
n : 显示/隐藏网络统计信息
x : 删除警告和严重日志
h : 显示/隐藏帮助界面
q : 退出
w : 删除警告记录
CPU 平均负载
不同状态(如活动、休眠)
进程的数量
所有内存信息,如物理内存、交换空间、空闲内存
CPU 信息
网络连接的上行/下行速度
磁盘 I/O 读/写速度详细信息
当前挂载设备的磁盘使用情况
消耗资源最多的进程和他们的 CPU/内存使用情况
watch
比如实时显示网络流量:watch -n 1 "/sbin/ifconfig eth0|grep bytes"
ps
显示10个消耗CPU最多的进程:ps aux|sort -rnk +3|head -10
显示10个消耗内存最多的进程:ps aux|sort -rnk +4|head -10
free
total used free shared buffers cached
Mem: 1024708 735760 288948 3712 43352 291540
-/+ buffers/cache: 400868 623840
Swap: 1046524 0 1046524
total= used + free
分析思路:
当 –/+ buffers/cache中的free长时间接近0,且 swap used长时间比较大时,说明物理内存已经不够用了,
需要升级内存或降低内存的使用量。
iostat
不带参数的iostat命令将会输出CPU和每个分区的输出/输出的统计信息
- 重要文档
- 工作须知
- 项目下的公共方法
- 程序员给代码写注释时有哪些讲究!
- RestFul 讲解
- 其他知识
- docker容器
- MongoDB的使用
- Node.js的使用
- Session共享
- Wordpress的使用
- Websocket的简介
- Ajax
- 项目技术
- Https配置证书
- Nginx的反向代理
- MySQL读写分离配置(laravel篇)
- Nginx的负载均衡
- App接口返回格式
- laravel中JWT的应用
- laravel验证码的使用
- laravel公共方法文件
- laravel框架的RBAC
- Git相关
- Git篇1
- Git篇2
- Mysql相关
- Mysql的主从复制
- MySQL的备份
- MySQL的使用
- 请求第三方接口
- Redis相关
- redis的使用
- Redis的基本用法以及场景分析
- 开发小技巧
- Linux
- 禁用root及密码登录
- Lnmp环境的安装
- 安装composer
- 安装Redis
- 文件共享服务 samba
- 其他安装
- Lnmp常用命令
- 性能检测命令
- Nginx的配置详解
- PHP相关
- PHP基础知识
- php常见的系统函数
- PHP的设计模式
- Cookie 和 Session 的封装
- Mysql知识
- Mysql索引
- MySQL的数据类型
- PHP重要知识
- PHP框架篇
- Laravel框架
- laravel---Excel
- laravel文件上传
- Laravel-Mysql常用操作
- Laravel队列(queue)
- laravel-发送Email
- laravel--JWT
- TP框架篇
- tp5主从数据库设置读写分离
- 前端
- JS
- js代码实现点击按钮出现60秒倒计时
- 开发软件相关
- 代码编辑器
- vs code配置ftp连接远程服务器实现代码文自动上传
- 编程相关软件下载