‘壹’ 如何检查linux服务器cpu,内存性能
1.查看系统负载
(1)uptime
这个命令可以快速查看机器的负载情况。
在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。
命令的输出,load average表示1分钟、5分钟、15分钟的平均负载情况。
通过这三个数据,可以了解服务器负载是在趋于紧张还是趋于缓解。
如果1分钟平均负载很高,而15分钟平均负载很低,说明服务器正在命令高负载情况,需要进一步排查CPU资源都消耗在了哪里。
反之,如果15分钟平均负载很高,1分钟平均负载较低,则有可能是CPU资源紧张时刻已经过去。
(2)W
Show who is logged on and what they are doing.
可查询登录当前系统的用户信息,以及这些用户目前正在做什么操作
其中的load average后面的三个数字则显示了系统最近1分钟、5分钟、15分钟的系统平均负载情况
注意:
load average这个输出值,这三个值的大小一般不能大于系统逻辑CPU的个数。
如果输出中系统有4个逻辑CPU,如果load average的三个值长期大于4时,说明CPU很繁忙,负载很高,可能会影响系统性能,
但是偶尔大于4时,倒不用担心,一般不会影响系统性能。相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲
2.dmesg | tail
该命令会输出系统日志的最后10行。
这些日志可以帮助排查性能问题.
3.vmstat
vmstat Virtual Meomory Statistics(虚拟内存统计),用来获得有关进程、虚存、页面交换空间及 CPU活动的信息。这些信息反映了系统的负载情况。
后面跟的参数1,表示每秒输出一次统计信息,表头提示了每一列的含义
(1)监控进程procs:
r:等待在CPU资源的进程数。
这个数据比平均负载更加能够体现CPU负载情况,数据中不包含等待IO的进程。如果这个数值大于机器CPU核数,那么机器的CPU资源已经饱和(出现了CPU瓶颈)。
b:在等待io的进程数 。
(2)监控内存memoy:
swpd:现时可用的交换内存(单位KB)
free:系统可用内存数(以千字节为单位)
buff: 缓冲去中的内存数(单位:KB)。
cache:被用来做为高速缓存的内存数(单位:KB)。
(3)监控swap交换页面
si: 从磁盘交换到内存的交换页数量,单位:KB/秒。
so: 从内存交换到磁盘的交换页数量,单位:KB/秒。
如果这个数据不为0,说明系统已经在使用交换区(swap),机器物理内存已经不足。
(4)监控 io块设备
bi: 发送到块设备的块数,单位:块/秒。
bo: 从块设备接收到的块数,单位:块/秒。
(5)监控system系统
in: 每秒的中断数,包括时钟中断。
cs: 每秒的环境(上下文)转换次数。
(6)监控cpu中央处理器:
us:用户进程使用的时间 。以百分比表示。
sy:系统进程使用的时间。 以百分比表示。
id:中央处理器的空闲时间 。以百分比表示。
us, sy, id, wa, st:这些都代表了CPU时间的消耗,它们分别表示用户时间(user)、系统(内核)时间(sys)、空闲时间(idle)、IO等待时间(wait)和被偷走的时间(stolen,一般被其他虚拟机消耗)。
这些CPU时间,可以让我们很快了解CPU是否出于繁忙状态。
注:
如果IO等待时间很长,那么系统的瓶颈可能在磁盘IO。
如果用户时间和系统时间相加非常大,CPU出于忙于执行指令。
如果有大量CPU时间消耗在用户态,也就是用户应用程序消耗了CPU时间。这不一定是性能问题,需要结合r队列,一起分析。
4.mpstat -P ALL 1
该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的。
MultiProcessor Statistics的缩写,是实时系统监控工具
其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。
格式:mpstat [-P {|ALL}] [internal [count]]
-P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
internal 相邻的两次采样的间隔时间
count 采样的次数,count只能和delay一起使用
all : 指所有CPU
%usr : 显示在用户级别(例如应用程序)执行时CPU利用率的百分比
%nice :显示在拥有nice优先级的用户级别执行时CPU利用率的百分比
%sys : 现实在系统级别(例如内核)执行时CPU利用率的百分比
%iowait : 显示在系统有未完成的磁盘I/O请求期间CPU空闲时间的百分比
%irq : 显示CPU服务硬件中断所花费时间的百分比
%soft : 显示CPU服务软件中断所花费时间的百分比
%steal : 显示虚拟机管理器在服务另一个虚拟处理器时虚拟CPU处在非自愿等待下花费时间的百分比
%guest : 显示运行虚拟处理器时CPU花费时间的百分比
%idle : 显示CPU空闲和系统没有未完成的磁盘I/O请求情况下的时间百分比
系统有两个CPU。如果使用参数 -P 然后紧跟CPU编号得到指定CPU的利用率。
( Ubuntu安装: apt-get install sysstat)
5.pidstat 1
pidstat命令输出进程的CPU占用率,该命令会持续输出,并且不会覆盖之前的数据,可以方便观察系统动态
6.iostat -xz 1
iostat命令主要用于查看机器磁盘IO情况
r/s, w/s, rkB/s, wkB/s:分别表示每秒读写次数和每秒读写数据量(千字节)。读写量过大,可能会引起性能问题。
await:IO操作的平均等待时间,单位是毫秒。这是应用程序在和磁盘交互时,需要消耗的时间,包括IO等待和实际操作的耗时。如果这个数值过大,可能是硬件设备遇到了瓶颈或者出现故障。
avgqu-sz:向设备发出的请求平均数量。如果这个数值大于1,可能是硬件设备已经饱和(部分前端硬件设备支持并行写入)。
%util:设备利用率。这个数值表示设备的繁忙程度,经验值是如果超过60,可能会影响IO性能(可以参照IO操作平均等待时间)。如果到达100%,说明硬件设备已经饱和。
注:如果显示的是逻辑设备的数据,那么设备利用率不代表后端实际的硬件设备已经饱和。值得注意的是,即使IO性能不理想,也不一定意味这应用程序性能会不好,可以利用诸如预读取、写缓存等策略提升应用性能
7.free -m
free命令可以查看系统内存的使用情况,-m参数表示按照兆字节展示。
最后两列分别表示用于IO缓存的内存数,和用于文件系统页缓存的内存数。
注:
第二行-/+ buffers/cache,看上去缓存占用了大量内存空间。这是Linux系统的内存使用策略,尽可能的利用内存,如果应用程序需要内存,这部分内存会立即被回收并分配给应用程序。
如果可用内存非常少,系统可能会动用交换区(如果配置了的话),这样会增加IO开销(可以在iostat命令中提现),降低系统性能。
8.sar -n DEV 1
sar命令在这里可以查看网络设备的吞吐率。
在排查性能问题时,可以通过网络设备的吞吐量,判断网络设备是否已经饱和。
9.sar -n TCP,ETCP 1
sar命令在这里用于查看TCP连接状态,其中包括:
active/s:每秒本地发起的TCP连接数,既通过connect调用创建的TCP连接;
passive/s:每秒远程发起的TCP连接数,即通过accept调用创建的TCP连接;
retrans/s:每秒TCP重传数量;
TCP连接数可以用来判断性能问题是否由于建立了过多的连接,进一步可以判断是主动发起的连接,还是被动接受的连接。TCP重传可能是因为网络环境恶劣,或者服务器压力过大导致丢包。
10.top
top命令包含了前面好几个命令的检查的内容。比如系统负载情况(uptime)、系统内存使用情况(free)、系统CPU使用情况(vmstat)等。
因此通过这个命令,可以相对全面的查看系统负载的来源。同时,top命令支持排序,可以按照不同的列排序,方便查找出诸如内存占用最多的进程、CPU占用率最高的进程等。
但是,top命令相对于前面一些命令,输出是一个瞬间值,如果不持续盯着,可能会错过一些线索。这时可能需要暂停top命令刷新,来记录和比对数据。
‘贰’ Linux命令行查看内存
用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况...
还有一种办法是 ps -ef | sort -k7 ,将进程按运行时间排序,看哪个进程消耗的cpu时间最多。
top:
主要参数 :
free
1.作用
free命令用来显示内存的使用情况,使用权限是所有用户。
**2.格式 **
**3.主要参数 **
uptime
vmstat
**1 观察磁盘活动情况 **
磁盘活动情况主要从以下几个指标了解:
**2 观察cpu活动情况 **
vmstat比top更能反映出cpu的使用情况:
iostat
用于统计CPU的使用情况及tty设备、硬盘和CD-ROM的I/0量
即使爬到最高的山上,一次也只能脚踏实地地迈一步。
Linux查看CPU和内存使用情况:
在做Linux系统优化的时候,物理内存是其中最重要的一方面。自然的,Linux也提供了非常多的方法来监控宝贵的内存资源的使用情况。下面的清单详细的列出了Linux系统下通过视图工具或命令行来查看内存使用情况的各种方法。
1. /proc/meminfo
查看RAM使用情况最简单的方法是通过 /proc/meminfo 。这个动态更新的虚拟文件实际上是许多其他内存相关工具(如:free / ps / top)等的组合显示。 /proc/meminfo 列出了所有你想了解的内存的使用情况。进程的内存使用信息也可以通过/proc/<pid>/statm 和 /proc/<pid>/status 来查看。
atop命令是一个终端环境的监控命令。它显示的是各种系统资源(CPU, memory, network, I/O, kernel)的综合,并且在高负载的情况下进行了彩色标注。
free命令是一个快速查看内存使用情况的方法,它是对 /proc/meminfo 收集到的信息的一个概述。
GNOME System Monitor 是一个显示最近一段时间内的CPU、内存、交换区及网络的使用情况的视图工具。它还提供了一种查看CPU及内存使用情况的方法。
htop命令显示了每个进程的内存实时使用率。它提供了所有进程的常驻内存大小、程序总内存大小、共享库大小等的报告。列表可以水平及垂直滚动。
功能同 4 中介绍的GENOME版本。
memstat是一个有效识别executable(s), process(es) and shared libraries使用虚拟内存情况的命令。给定一个进程ID,memstat可以列出这个进程相关的可执行文件、数据和共享库。
nmon是一个基于ncurses的系统基准测试工具,它可以监控CPU、内存、I/O、文件系统及网络资源等的互动模式。对于内存的使用,它可以实时的显示 总/剩余内存、交换空间等信息。
ps命令可以实时的显示各个进程的内存使用情况。Reported memory usage information includes %MEM (percent of physical memory used), VSZ (total amount of virtual memory used), and RSS (total amount of physical memory used)。你可以使用 “–sort”选项对进程进行排序,例如按RSS进行排序:
smem命令允许你统计基于/proc信息的不同进程和用户的内存使用情况。内存使用情况的分析可以导出图表(如条形图和饼图)。
top命令提供了实时的运行中的程序的资源使用统计。你可以根据内存的使用和大小来进行排序。
vmstat命令显示实时的和平均的统计,覆盖CPU、内存、I/O等内容。例如内存情况,不仅显示物理内存,也统计虚拟内存。
‘叁’ Linux系统常用操作命令有哪些
前言
第1章 Linux命令行简介 / 1
1.1Linux命令行概述 / 1
1.2在Linux命令行下查看命令帮助 / 4
1.3Linux shutdown reboot halt / 9
关机:
shutdown -h now
halt
init 0
第2章 文件和目录操作命令 / 13
2.1pwd:显示当前所在的位置 / 13
2.2cd:切换目录 / 16
2.3tree:以树形结构显示目录下的内容 / 18
2.4mkdir:创建目录 / 22
2.5touch:创建空文件或改变文件的时间戳属性 / 27
2.6ls:显示目录下的内容及相关属性信息 / 30
2.7cp:复制文件或目录 / 39
2.8mv:移动或重命名文件 / 42
2.9rm:删除文件或目录 / 45
2.10rmdir:删除空目录 / 48
2.11ln:硬链接与软链接 / 49
2.12readlink:查看符号链接文件的内容 / 54
2.13find:查找目录下的文件 / 55
2.14xargs:将标准输入转换成命令行参数 / 68
2.15rename:重命名文件 / 71
2.16basename:显示文件名或目录名 / 72
2.17dirname:显示文件或目录路径 / 72
2.18chattr:改变文件的扩展属性 / 73
2.19lsattr:查看文件扩展属性 / 75
2.20file:显示文件的类型 / 76
2.21md5sum:计算和校验文件的MD5值 / 77
2.22chown:改变文件或目录的用户和用户组 / 80
2.23chmod:改变文件或目录权限 / 81
2.24chgrp:更改文件用户组 / 85
2.25umask:显示或设置权限掩码 / 86
2.26老男孩从新手成为技术大牛的心法 / 90
第3章 文件过滤及内容编辑处理命令 / 91
3.1cat:合并文件或查看文件内容 / 91
3.2tac:反向显示文件内容 / 103
3.3more:分页显示文件内容 / 104
3.4less:分页显示文件内容 / 107
3.5head:显示文件内容头部 / 109
3.6tail:显示文件内容尾部 / 111
3.7tailf:跟踪日志文件 / 114
3.8cut:从文本中提取一段文字并输出 / 115
3.9split:分割文件 / 117
3.10paste:合并文件 / 118
3.11sort:文本排序 / 123
3.12join:按两个文件的相同字段合并 / 127
3.13uniq:去除重复行 / 129
3.14wc:统计文件的行数、单词数或字节数 / 131
3.15iconv:转换文件的编码格式 / 133
3.16dos2unix:将DOS格式文件转换成UNIX格式 / 134
3.17diff:比较两个文件的不同 / 135
3.18vimdiff:可视化比较工具 / 138
3.19rev:反向输出文件内容 / 139
3.20tr:替换或删除字符 / 140
3.21od:按不同进制显示文件 / 143
3.22tee:多重定向 / 145
3.23vi/vim:纯文本编辑器 / 147
3.24老男孩逆袭思想:做Linux运维的多个好处 / 152
第4章 文本处理三剑客 / 153
4.1grep:文本过滤工具 / 153
4.2sed:字符流编辑器 / 159
4.3awk基础入门 / 165
第5章 Linux信息显示与搜索文件命令 / 176
5.1uname:显示系统信息 / 176
5.2hostname:显示或设置系统的主机名 / 178
5.3dmesg:系统启动异常诊断 / 179
5.4stat:显示文件或文件系统状态 / 181
5.5:统计磁盘空间使用情况 / 183
5.6date:显示与设置系统时间 / 186
5.7echo:显示一行文本 / 190
5.8watch:监视命令执行情况 / 193
5.9which:显示命令的全路径 / 195
5.10whereis:显示命令及其相关文件全路径 / 196
5.11locate:快速定位文件路径 / 197
5.12updatedb:更新mlocate数据库 / 199
5.13老男孩逆袭思想:新手在工作中如何问问题不会被鄙视 / 200
第6章 文件备份与压缩命令 / 201
6.1tar:打包备份 / 201
6.2gzip:压缩或解压文件 / 208
6.3zip:打包和压缩文件 / 211
6.4unzip:解压zip文件 / 212
6.5scp:远程文件复制 / 214
6.6rsync:文件同步工具 / 216
6.7老男孩逆袭思想:新手如何高效地提问 / 220
第7章 Linux用户管理及用户信息查询命令 / 222
7.1 useradd:创建用户 / 222
7.2usermod:修改用户信息 / 227
7.3userdel:删除用户 / 229
7.4groupadd:创建新的用户组 / 230
7.5groupdel:删除用户组 / 231
7.6passwd:修改用户密码 / 232
7.7chage:修改用户密码有效期 / 237
7.8chpasswd:批量更新用户密码 / 238
7.9su:切换用户 / 240
7.10visudo:编辑sudoers文件 / 242
7.11sudo:以另一个用户身份执行命令 / 244
7.12id:显示用户与用户组的信息 / 248
7.13w:显示已登录用户信息 / 249
7.14who:显示已登录用户信息 / 250
7.15users:显示已登录用户 / 252
7.16whoami:显示当前登录的用户名 / 253
7.17last:显示用户登录列表 / 253
7.18lastb:显示用户登录失败的记录 / 254
7.19lastlog:显示所有用户的最近登录记录 / 255
第8章 Linux磁盘与文件系统管理命令 / 257
8.1fdisk:磁盘分区工具 / 257
8.2partprobe:更新内核的硬盘分区表信息 / 265
8.3tune2fs:调整ext2/ext3/ext4文件系统参数 / 266
8.4parted:磁盘分区工具 / 268
8.5mkfs:创建Linux文件系统 / 272
8.6mpe2fs:导出ext2/ext3/ext4文件系统信息 / 274
8.7resize2fs:调整ext2/ext3/ext4文件系统大小 / 275
8.8fsck:检查并修复Linux文件系统 / 278
8.9dd:转换或复制文件 / 281
8.10mount:挂载文件系统 / 284
8.11umount:卸载文件系统 / 288
8.12df:报告文件系统磁盘空间的使用情况 / 289
8.13mkswap:创建交换分区 / 293
8.14swapon:激活交换分区 / 294
8.15swapoff:关闭交换分区 / 295
8.16sync:刷新文件系统缓冲区 / 296
第9章 Linux进程管理命令 / 298
9.1ps:查看进程 / 298
9.2pstree:显示进程状态树 / 305
9.3pgrep:查找匹配条件的进程 / 306
9.4kill:终止进程 / 307
9.5killall:通过进程名终止进程 / 310
9.6pkill:通过进程名终止进程 / 311
9.7top:实时显示系统中各个进程的资源占用状况 / 313
9.8nice:调整程序运行时的优先级 / 320
9.9renice:调整运行中的进程的优先级 / 323
9.10nohup:用户退出系统进程继续工作 / 324
9.11strace:跟踪进程的系统调用 / 325
9.12ltrace:跟踪进程调用库函数 / 332
9.13runlevel:输出当前运行级别 / 334
9.14init:初始化Linux进程 / 335
9.15service:管理系统服务 / 335
第10章 Linux网络管理命令 / 338
10.1ifconfig:配置或显示网络接口信息 / 338
10.2ifup:激活网络接口 / 343
ifup eth0
10.3ifdown:禁用网络接口 / 343
ifdown eth0
service network restart(/etc/init.d/network restart) 激活整个网络,所有网卡。
10.4route:显示或管理路由表 / 344
10.5arp:管理系统的arp缓存 / 350
10.6ip:网络配置工具 / 351
10.7netstat:查看网络状态 / 358
10.8ss:查看网络状态 / 362
10.9ping:测试主机之间网络的连通性 / 363
10.10traceroute:追踪数据传输路由状况 / 366
10.11arping:发送arp请求 / 367
10.12telnet:远程登录主机 / 369
10.13nc:多功能网络工具 / 370
10.14ssh:安全地远程登录主机 / 373
10.15wget:命令行下载工具 / 376
10.16mailq:显示邮件传输队列 / 379
10.17mail:发送和接收邮件 / 381
10.18nslookup:域名查询工具 / 386
10.19dig:域名查询工具 / 389
10.20host:域名查询工具 / 393
10.21nmap:网络探测工具和安全/端口扫描器 / 394
10.22tcpmp:监听网络流量 / 398
第11章 Linux系统管理命令 / 407
11.1lsof:查看进程打开的文件 / 407
11.2uptime:显示系统的运行时间及负载 / 411
11.3free:查看系统内存信息 / 411
11.4iftop:动态显示网络接口流量信息 / 413
11.5vmstat:虚拟内存统计 / 415
11.6mpstat:CPU信息统计 / 419
11.7iostat:I/O信息统计 / 420
11.8iotop:动态显示磁盘I/O统计信息 / 423
11.9sar:收集系统信息 / 425
11.10chkconfig:管理开机服务 / 430
11.11ntsysv:管理开机服务 / 433
11.12 setup:系统管理工具 / 434
11.13ethtool:查询网卡参数 / 436
11.14mii-tool:管理网络接口的状态 / 437
11.19rpm:RPM包管理器 / 443
11.20yum:自动化RPM包管理工具 / 446
top命令
第12章 Linux系统常用内置命令 / 450
12.1Linux内置命令概述 / 450
12.2Linux内置命令简介 / 450
12.3Linux常用内置命令实例 / 452
‘肆’ 如何用十条命令在一分钟内检查linux服务器性能
1、uptime命令
这个命令可以快速查看机器的负载情况。
2、dmesg命令
该命令会输出系统日志的最后10行。
3、vmstat命令
vmstat(8) 命令,每行会输出一些系统核心指标,这些指标可以让我们更详细的了解系统状态。
4、mpstat命令
该命令可以显示每个CPU的占用情况。
5、pidstat命令
pidstat命令输出进程的CPU占用率。
6、iostat命令
7、free命令
free命令可以查看系统内存的使用情况,
8、sar命令
sar命令在这里可以查看网络设备的吞吐率。
9、top命令
包含了前面好几个命令的检查的内容。
‘伍’ linux中iostat命令r/s高怎么办
一些基本用法:
•systemctl - 列出所有单元(UNIT)以及它们的状态(这里的 UNIT 指的就是系统上的 job 和 service)
•systemctl list-units - 列出所有 UNIT
•systemctl start [NAME...] - 启动一项或多项 UNIT
•systemctl stop [NAME...] - 停止一项或多项 UNIT
•systemctl disable [NAME...] - 将 UNIT 设置为开机不启动
•systemctl list-unit-files - 列出所有已安装的 UNIT,以及它们的状态
•systemctl --failed - 列出开机启动失败的 UNIT
•systemctl --type=mount - 列出某种类型的 UNIT,类型包含:service, mount, device, socket, target
•systemctl enable debug-shell.service - 将一个 shell 脚本设置为开机启动,用于调试
为了更方便处理这些 UNIT,你可以使用 systemd-ui 软件包,你只要输入 systemadm 命令就可以使用这个软件。
‘陆’ 浜斾釜Linux绠鍗曞懡浠ゅ府浣犺В鍐崇郴缁熸ц兘闂棰
浜嫔疄涓婏纴鍒╃敤涓浜涚亩鍗旷殑Linux锻戒护锛屽彲浠ュ彂鐜拌稿氱$悊涓绘満镄勭粏鑺傞梾棰桦苟涓旇兘杩呴熻岀亩鍗曞湴瑙e喅镐ц兘闂棰樸
涓銆乼op
瀵硅稿氱$悊锻樻潵璇达纴链鏂板︿细镄勫氨鏄疶OP锻戒护锛屽畠鍙浠ユ樉绀哄嚭褰揿墠杩愯岀殑镓链夊唴镙镐换锷★纴骞朵笖鎻愪緵浜嗕竴浜涗富链虹姸镐佺殑缁熻℃姤锻娿傞粯璁ゅ湴锛孴OP锻戒护姣忛殧浜斿垎阍熻嚜锷ㄦ洿鏂颁竴娆¤繖涓鏁版嵁(杩欎釜镟存柊闂撮殧鏄鍙璁剧疆镄)銆
TOP锻戒护镄勫姛鑳戒赴瀵屽埌浠や汉闅句互缃淇(浼拌″緢灏戞湁浜轰娇鐢ㄨ繃涓鍗娄互涓婄殑锷熻兘)銆备竴鑸𨱒ヨ翠綘浼氢互钬榟钬欓敭寮濮嬶纴灏辨槸钬榟elp钬(璇存槑鏂囨。涔熼潪甯哥簿褰)銆傚府锷╁弬鏁板彲浠ュ揩阃熸樉绀哄嚭浣犺兘浠庝腑澧炲姞鍜屽噺铡荤殑鍐呭癸纴钖屾椂涔熷彲浠ユ敼鍙樻帓搴忋备綘杩桦彲浠ョ敤k𨱒ョ粨𨱒熻繘绋嬫垨钥呯敤r镙囨敞鐗瑰埆镄勮繘绋嬨
Top锻戒护鏄剧ず褰揿ぉ镄勬e父杩愯屾椂闂淬佺郴缁熻礋杞姐佸勭悊鍣ㄧ殑鏁伴噺銆佸唴瀛樼殑浣跨敤鐜囧拰鍝浜涜繘绋嬩娇鐢ㄤ简澶у氭暟CPU璧勬簮(鍖呮嫭姣忎釜杩涚▼镄勫ぇ閲忕浉鍏充俊鎭锛屼緥濡傚湪绾跨敤鎴峰拰姝e湪镓ц岀殑锻戒护绛)銆
浜屻乿mstat
Vmstat锻戒护鎻愪緵缁欎綘涓涓褰揿墠CPU銆両O銆佽繘绋嫔拰鍐呭瓨浣跨敤鐜囩殑蹇镦с傚拰TOP锻戒护涓镙凤纴瀹冭嚜锷ㄥ姩镐佸埛鏂帮纴骞朵笖鍙浠ョ敤涓嬮溃镄勫懡浠ゆ墽琛岋细
$ vmstat 10
鍦ㄨ繖閲屽欢杩熸槸鎸囦袱娆″埛鏂伴棿闅旂殑浠ョ掍负鍗曚綅镄勬椂闂达纴杩欓噷鏄10绉挜挓銆俈MSTAT锻戒护浼氩皢妫镆ョ殑缁撴灉涓嶅仠鍒锋柊鏄剧ず鍦ㄥ睆骞曚笂锛岀洿鍒颁綘鐢–TRL-C锻戒护缁撴潫瀹(鎴栬呬綘涔熷彲浠ュ湪镓ц岀殑镞跺栾剧疆涓涓闄愬埗)銆傝繖涓鎸佺画杈揿嚭镄勭粨鏋沧湁镞跺栾鐢ㄦ潵瀵煎叆鍒版枃浠朵腑鐢ㄦ潵鍒嗘瀽镐ц兘瓒嫔娍锛屼絾鏄鎴戜滑灏嗘垒鍒版洿濂界殑鏂瑰纺𨱒ュ仛杩欎欢浜嬫儏锛屽湪鏂囩珷钖庨溃镄勯儴鍒嗕细浠嬬粛銆
绗涓鍒楁樉绀虹殑鏄澶勭悊鍣锛 r鍒楁槸寰呭懡镄勫勭悊鍣锛岃宐鍒楁槸浼戠湢镄勫勭悊鍣ㄣ傚傛灉浣犲湪杩欓噷鐪嫔埌濂藉氢釜寰呭懡镄勫勭悊鍣锛岄偅璇存槑浣犲彲鑳藉湪镆愪釜鍦版柟阆囧埌浜嗘ц兘鐡堕堛傜浜屽垪鏄剧ず镄勬槸鍐呭瓨锛氲櫄𨰾熺殑锛岀┖闂茬殑锛岀紦鍐插拰缂揿瓨鍐呭瓨銆傜涓夊垪鏄剧ず镄勬槸浜ゆ崲瀛桦偍浠ュ强鍏蜂綋链夊氩皯鍐呭瓨鍦ㄥ拰纾佺洏锅氢氦鎹銆傜锲涘垪鍒欐槸I/O淇℃伅锛屾樉绀轰简鍧楁湇锷℃帴鏀跺拰鍙戦佺殑鍧楁暟鎹淇℃伅銆
链钖庝袱鍒楁樉绀轰简绯荤粺鍜孋PU鐩稿叧镄勪俊鎭銆傜郴缁熷垪鏄剧ず镄勬槸鍐茬獊镄勬暟閲忓拰姣忕挜挓镄勪氦鎹銆侰PU鍒楁槸鏄剧ず浜嗙壒鍒链夌敤镄勪俊鎭銆傛疮涓鍒嗗垪鏄剧ず浜嗕竴涓狢PU镞堕棿镄勭栌鍒嗘瘆銆傝繖浜涘垎鍒楀备笅锛
US锛氲繍琛岀敤鎴蜂换锷″拰浠g爜钥楄垂镄勬椂闂
SY:杩愯屽唴镙告垨钥呯郴缁熶唬镰佽楄垂镄勬椂闂
ID:绌洪棽镞堕棿
WA:绛夊緟IO钥楄垂镄勬椂闂
ST:铏氭嫙链哄崰鐢ㄧ殑镞堕棿
VMSTAT锻戒护镎呴暱鐢ㄦ潵镆ヨCPU浣跨敤𨱍呭喌锛岃槠铹惰颁綇姣忎釜鍙傛暟涓昏佸彇鍐充簬鎸佺画镄勭洃鎺э纴锲犱负瀵笴PU杩涜岀煭镞堕棿镄勮傚疗浣犲彲鑳芥棤娉曡幏鐭CPU鐪熸g殑闂棰樻墍鍦ㄣ备綘闇瑕佹煡鐪嬮暱链熺殑杩愯岃秼锷挎潵銮峰缑涓涓纭鍒囩殑CPU镐ц兘淇℃伅銆
涓夈乮ostat
鎴戜滑鎺ヤ笅𨱒ヨ佽茬殑锻戒护鏄疘OSTAT銆侷OSTAT锻戒护(鍦║BUNTU銆佺孩甯藉拰FEDORA绯荤粺涓閮芥槸鐢盨YSSTAT杞浠跺寘鎻愪緵镄)鍙浠ユ彁渚涗笁涓鎶ュ憡锛欳PU浣跨敤鐜囥佽惧囦娇鐢ㄧ巼鍜岀绣缁沧枃浠剁郴缁熶娇鐢ㄧ巼銆傚傛灉浣犱笉锷犱换浣曞弬鏁板湴杩愯岃ュ懡浠わ纴瀹冧细鏄剧ず镓链夎繖涓変釜鎶ュ憡锛屼綘鍙浠ラ氲繃锷犲弬鏁-c銆-d鍜-h𨱒ュ崟镫鏄剧ず瀹冧滑涓镄勪竴绉嶃
鍦ㄤ笂闱㈢殑锲句腑浣犲彲浠ョ湅鍒板畠浠涓镄勫叾涓涓や釜鎶ュ憡锛岀涓涓鏄疌PU浣跨敤鐜囷纴瀹冨皢钖勮繘绋嫔崰鐢ㄧ殑CPU鐢ㄧ栌鍒嗘瘆鍒嗙被鍒楀嚭𨱒ヤ简銆备綘鑳界湅鍒扮敤鎴疯繘绋嬨佺郴缁熻繘绋嬨乮owait鍜岀┖闂叉椂闂寸瓑淇℃伅銆
绗浜屼釜鎶ュ憡鏄鍏充簬璁惧囦娇鐢ㄧ巼锛屾樉绀轰简瀹夎呭湪璇ヤ富链轰笂镄勬疮涓璁惧囧拰涓浜涙湁鐢ㄧ殑淇℃伅锛岃稿傛疮绉掍紶杈挞噺銆佹暟鎹鍧楄诲啓锛屽苟涓斿厑璁镐綘瀵规湁镐ц兘闂棰樼殑璁惧囧仛镙囱般备綘鍙浠ラ氲繃娣诲姞-k鎴栬-m鍙傛暟𨱒ユ寜镦у崈瀛楄妭鎴栬呭厗瀛楄妭鏄剧ず缁熻′俊鎭锛岃屼笉鏄浠ユ暟鎹鍧椾负鍗曚綅锛岃繖镙峰湪镆愪簺𨱍呭喌涓嬩细镟翠究浜庢煡阒呭拰鐞呜В銆
链钖庝竴涓鎶ュ憡锛屾病链夋埅锲撅纴鏄剧ず镄勪俊鎭鍜屼笂闱浠嬬粛镄勮惧囦娇鐢ㄧ巼链夌偣鐩镐技锛屽彧鏄瀵硅薄浠庨梼浠剁殑璁惧囨崲鎴愪简鎸傝浇镄勭绣缁沧枃浠剁郴缁熴
锲涖乫ree
涓嬩竴涓锻戒护free锛屽彲浠ユ樉绀轰富鍐呭瓨鍜屼氦鎹㈠唴瀛樼殑缁熻¢噺銆
浣犲彲浠ラ氲繃娣诲姞-t鍙傛暟𨱒ユ樉绀烘荤殑鍐呭瓨锛屾垨钥呴氲繃娣诲姞-b鍙傛暟鍜-m鍙傛暟𨱒ョ敤瀛楄妭鏁版樉绀(榛樿ゆ儏鍐垫槸鐢ㄥ崈瀛楄妭涓哄崟浣)銆
FREE锻戒护杩桦彲浠ラ氲繃浣跨敤-s鍙傛暟𨱒ヤ娇鍏朵互镆愪釜闂撮殧镞堕棿鎸佺画鍒锋柊鍦拌繍琛岋细
$ free -s 5
杩欎釜锻戒护鏄浠ユ疮闅5绉挜挓鍒锋柊涓娆$殑鏂瑰纺杩愯孎REE锻戒护骞惰緭鍑虹粨鏋溿
浜斻乻ar
璞℃垜浠瑙佽繃镄勮稿氩叾瀹冨伐鍏蜂竴镙凤纴鎴戜滑鍙浠ョ敤sar锻戒护𨱒ユ敹闆嗐佹煡鐪嫔拰璁板綍链嶅姟鍣ㄧ殑镐ц兘鏁版嵁銆傚畠姣旀垜浠瑙佽繃镄勪换浣旷被浼煎伐鍏烽兘镟村己澶э纴骞朵笖鍙浠ユ敹闆嗗拰鏄剧ず闀挎椂闂存电殑鏁版嵁銆傚湪绾㈠附鍜孶BUNTU涓婏纴瀹冮氲繃SYSSTAT鍖呮潵瀹夎呫傝╂垜浠浠庝笉娣诲姞浠讳綍鍙傛暟杩愯孲AR锻戒护寮濮嫔惂锛
浠庤繖閲屾垜浠鍙浠ョ湅鍒皊ar锻戒护镄勫熀链杈揿嚭淇℃伅锛屽寘𨰾珻PU缁熻(姣忛殧10鍒嗛挓涓娆$殑鏁版嵁鍜屾渶钖庣殑骞冲潎鏁版嵁)銆傝ヤ俊鎭鏄浠庝竴涓浠24灏忔椂涓哄崟浣崭笉锅沧敹闆嗕俊鎭镄勬棩缁熻℃枃浠朵腑鎶揿彇鍑烘潵镄(杩欎釜鏂囦欢瀛桦偍鍦ㄧ洰褰/var/log/sa/涓锛屽苟涓旇锻戒护涓簊axx杩欐牱镄勬牸寮忥纴xx浠h〃璇ユ暟鎹鏀堕泦镄勬棩链)銆傚彟澶栧畠杩樻敹闆嗗叧浜庡唴瀛樸佽惧囥佺绣缁灭瓑镄勭粺璁′俊鎭(渚嫔傦纴阃氲繃锷-b鍙傛暟鍙浠ユ煡鐪嫔潡璁惧囩粺璁′俊鎭锛-n閲囨煡鐪嬬绣缁沧暟鎹锛-r鍙傛暟鐪嫔唴瀛树娇鐢)銆备綘杩桦彲浠ョ敤-A鍙傛暟𨱒ユ煡鐪嬫墍链夋敹闆嗙殑鏁版嵁銆
浣犺缮鍙浠ラ暱镞堕棿杩愯宻ar锻戒护铹跺悗灏呜緭鍑烘暟鎹瀵煎叆涓涓鏂囦欢涓𨱒ユ敹闆嗘暟鎹銆傝佽揪鍒拌繖涓鏁堟灉锛岄渶瑕佷娇鐢ㄥ弬鏁-o鍜屼竴涓鏂囦欢钖岖О锛岃佽繍琛岃ュ懡浠ょ殑镞堕棿闂撮殧(璁板缑鏀堕泦鏁版嵁浼氩艰嚧镐ц兘鍙桦樊锛屾墍浠ユ渶濂界‘淇濊繖涓闂撮殧涓嶈佸お鐭)鍜屽惊鐜镄勬℃暟-浣犺佽板綍镄勯棿闅旀℃暟銆傚傛灉浣犱笉杈揿叆寰鐜娆℃暟锛屽垯sar锻戒护浼氢竴鐩磋繍琛屼笅铡伙纴渚嫔傦细
$ sar -A -o /var/log/sar/sar.log 600 /dev/null 21
杩欓噷鎴戜滑灏嗘敹闆嗘墍链夋暟鎹(-A),璁板綍鍒版枃浠/var/log/sar/sar.log涓锛屾疮闅600绉(鎴栬5鍒嗛挓)鏀堕泦涓娆★纴鎸佺画鍦ㄥ悗鍙拌繍琛屻傚傛灉鎺ヤ笅𨱒ユ垜浠𨱍宠佹樉绀鸿繖涓鏁版嵁鎴戜滑鍙浠ョ敤sar锻戒护锷犱笂-f鍙傛暟锛屼緥濡傦细
$ sar -A -f /var/log/sar/sar.log
杩欐槸涓涓闱炲父锘烘湰镄剆ar锻戒护浠嬬粛銆傜敤sar锻戒护杩桦彲浠ュ缑鍒拌稿氩緢链夌敤镄勬暟鎹锛岃繖鑳戒娇寰楁煡鐪嬩富链烘ц兘鍙桦缑镟村姞鏂逛究鍜屾湁鏁堛傛垜寤鸿浣犲幓镆ョ湅涓涓媠ar锻戒护镄勮存槑鏂囨。浠庤岃幏寰楁洿璇︾粏镄勬柟娉曟潵銮峰缑浣犻渶瑕佺殑鏁版嵁銆
镐荤粨锛
鎴戜滑鐪嫔埌浜5涓锘烘湰镄勭敤鍦╨inux涓绘満涓婄$悊鍜屾煡鐪嬫ц兘鐘舵佺殑锻戒护宸ュ叿銆
闄ゆや箣澶栵纴铡荤湅涓涓嫔叾瀹冧竴浜涘伐鍏峰俶unin鍜宑ollected绛変篃鏄闱炲父鍊煎缑镄勶纴瀹冧滑涓崭粎鏀堕泦鍏充簬镐ц兘镄勬暟鎹锛岃缮鑳芥煡鐪嫔簲鐢ㄧ▼搴忓拰链嶅姟绛夛纴鍖呮嫭浣跨敤浣犺嚜宸辩殑鎻掍欢绛夈
杩欎簺宸ュ叿閮芥敮鎸佸炲姞锲惧舰鍖栫殑杈揿叆锛岃繖镙峰彲浠ヨ╀綘鐢ㄥ浘褰㈡洿鐩磋傜殑镆ョ湅浣犵殑鏁版嵁銆
‘柒’ linux常用性能命令
一般常用的都是用来分析服务器资源的,如磁盘,内存,cpu,网络等,具体分享如下四个。
1. 性能分析之 iostat 命令
iostat命令显示的是你的存储系统的细节状态。iostat显示系统三种类型的报告:CPU利用率、设备使用报告和网络文件系统报告等是否正常,完全可以在用户抱怨服务器慢之前,通过这个命令发现系统I/O方面的问题。
2. 性能分析之 top 命令使用
top命令可以显示系统中的进程信息。默认情况下,top会按照CPU使用率从高到低来显示系统中的进程,并且每5秒刷新一次排行榜。当然,你也可以让top按照PID、进程寿命、CPU耗时、内存消耗等维度对进程进行排序。(可以使用P和M快捷键,分别是按CPU利用率排序、按内存使用量排序)通过top命令,你可以很快地发现那些失去控制或不符合预期的进程。
3. 性能分析之 vmstat 命令使用
vmstat命令是Virtual Meomory Statistics(虚拟内存统计)的缩写,是常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率、内存使用、虚拟内存交换情况、IO读写情况。
4. 性能分析之 mpstat命令使用
mpstat是Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPU系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。mpstat最大的特点是:可以查看多核cpu中每个计算核心的统计数据;而类似工具vmstat只能查看系统整体cpu情况。
‘捌’ Linux系统监控要用到哪些命令
记录一下自己常用的linux系统命令,方便以后查阅,发觉记忆越来越不行了
找到最耗CPU的java线程ps命令
命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid
结果展示:
这个命令的作用,主要是可以获取到对应一个进程下的线程的一些信息。 比如你想分析一下一个java进程的一些运行瓶颈点,可以通过该命令找到所有当前Thread的占用CPU的时间,也就是这里的最后一列。
比如这里找到了一个TID : 30834 ,所占用的TIME时间最高。
通过 printf "%x\n" 30834 首先转化成16进制, 继续通过jstack命令mp出当前的jvm进程的堆栈信息。 通过Grep命令即可以查到对应16进制的线程id信息,很快就可以找到对应最耗CPU的代码快在哪。
简单的解释下,jstack下这一串线程信息内容:
"DboServiceProcessor-4-thread-295" daemon prio=10 tid=0x00002aab047a9800 nid=0x7d9b waiting on condition [0x0000000046f66000]
nid : 对应的linux操作系统下的tid,就是前面转化的16进制数字
tid: 这个应该是jvm的jmm内存规范中的唯一地址定位,如果你详细分析jvm的一些内存数据时用得上,我自己还没到那种程度,所以先放下
top命令
命令:top -Hp pid
结果显示:
和前面的效果一下,你可以实时的跟踪并获取指定进程中最耗cpu的线程。 再用前面的方法提取到对应的线程堆栈信息。
判断I/O瓶颈
mpstat命令
命令:mpstat -P ALL 1 1000
结果显示:
注意一下这里面的%iowait列,CPU等待I/O操作所花费的时间。这个值持续很高通常可能是I/O瓶颈所导致的。
通过这个参数可以比较直观的看出当前的I/O操作是否存在瓶颈
iostat命令
命令: iostat -m -x 1 1000
同样你可以观察对应的CPU中的%iowait数据,除此之外iostat还提供了一些更详细的I/O状态数据,比如比较重要的有:
avgqu-sz : The average queue length of the requests that were issued to the device. (磁盘队列的请求长度,正常的话2,3比较好。可以和cpu的load一样的理解)
await : The average time (in milliseconds) for I/O requests issued to the device to be served. (代表一个I/O操作从wait到完成的总时间)
svctm和%util都是代表处理该I/O请求花费的时间和CPU的时间比例。 判断是否瓶颈时,这两个参数不是主要的
r/s w/s 和 rMB/s wMB/s 都是代表当前系统处理的I/O的一些状态,前者是我们常说的tps,后者就是吞吐量。这也是评价一个系统的性能指标
pid命令
命令: pidstat -p pid -u -d -t -w -h 1 1000
结果显示:
相当实用的一个命令,可以基于当个进程分析对应的性能数据,包括CPU,I/O,IR , CS等,可以方便开发者更加精细化的观察系统的运行状态。不过pidstat貌似是在2.6内核的一些较新的版本才有,需要安装sysstat包。
ubuntu下,可以通过sudo apt-get install sysstat进行安装。
sar命令
命令:sar -x pid 1 1000
sar也可以指定对应的pid,关注固定的几个参数,没有pidstat那么强大。 看不到对应的I/O, IR等信息。
sar的功能可以覆盖mpstat , iostat的相关功能。
dstat命令
命令:dstat -y --tcp 1 1000
通过dstat --tcp可以比较方便的看到当前的tcp的各种状态,不需要每次netstat -nat去看
其他命令
netstat -natp : 查看对应的网络链接,关注下Recv-Q , Send-Q , State。
lsof -p pid : 查找对应pid的文件句柄
lsof -i : 80 : 查找对应端口被哪个进程占用
lsof /tmp/1.txt :查找对应文件被哪个进程占用
tcpmp / wireshark :抓包分析工具
jstat / jmap / jstack / jps 等一系列的java监控命令
最后
如果你想做一些性能调优的工作,一定要善于利用一些工具进行关注相应的状态。通过linux命令你可以比较方便的观测到CPU , I/O , network等一些比较外围的状态, 很多时候就已经可以解决大部分的问题。jvm内部的一些运行状态监控,得需要借助一些特有的工具进行细粒度的观测。