查看Linux下系统资源占用常用命令

来源:本网整理

可以用TOP工具查看实时状态。top进入视图:第一行:10:01:23 当前系统时间126 d

  一,top命令

linux下获取占用CPU资源最多的10个进程,可以使用如下命令组合:ps aux|head -

  1.作用

  top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Wi

  top命令用来显示执行中的程序进程,使用权限是所有用户。

可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle

  2.格式

你好,方法如下:可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,

  top [-] [d delay] [q] [c] [S] [s] [i] [n]

我觉得做原创自媒体重点放在内容上,而不是钱上!有好的内容,好的题材,分分钟钟都可以赚到一包中华烟的钱!很多自媒体作者觉得自媒体越来越难做了,发的原创视频都没有人看,连推荐量都少得可怜。其实这个跟内容质量有关,什么样的内容才会成为爆文呢?听我一一道来!1、遭人痛恨、引起公愤的视频比如两个小偷去偷狗,把狗打死了,然后炖火锅了,这样的视频很多,播放量都是上千万的。2、揭秘、内幕、暗访、卧底…这样的视频播放量往往很高,虽然个人不能发表新闻类这样的视频,但可以演呀,昨日重现哈!3、直击第一现场哪里出了事,能够直击第一现场,并在第一时间上传视频,这样的视频也会被疯狂的分享,阅读量也就上来了。4、经典轻音乐

  3.主要参数

必须栓!而且这个问题不能仅仅靠个人素质来自我约束,有关部门应该严格落实城市宠物饲养的相关规定,以期达到制约那些个人素质不高的爱汪人。怎么喜爱宠物是个人的自由选择,但不能“强加”于人,允许你喜欢,也应允许别人不喜欢。别说你的宠物不咬人,不扑人,不抓人,再怎么说,它也是个动物,你的喜爱并不是建立在对动物习性深入研究的基础上的。所以,动物什么时候撒欢(发疯发狂)谁也不知道,一般人对于它们的攻击很难抵挡,遑论老弱妇孺。因此,请爱汪人也相应地尊重一下他人,将自己的宝贝拴着带出去,这样就可以相安无事,各得其所,何乐而不为呢?

  d:指定更新的间隔,以秒计算。

谢邀:首先小编先告诉大家,图中那个类似小棒子的多余体,是可以插在手机耳机孔里的,这样连着360随身wifi和手机或者pad就很方便了,耳机孔还不进灰。2我们首先在官网下载并安装360随身wifi驱动,如图。(这里建议下载后的wifi驱动在自己的U盘或者网盘备份一份,这里也建议360官方,以后版本的随时wifi最好是能给一个驱动的富裕空间)3去默认下一步就好了,建议这个地方不要调制。4装好后360随身wifi会提示你插上自己的360随身wifi。5像U盘一样插上就好了,这里注意最好插到USB2.0的扣上去,小编测试的3.0感觉安装的时候慢好多。6到这里就慢慢等待吧,漫长的驱动识别和安装。7识别后

  q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。

首先华晨宇和尹毓恪并不是同一类型,放在一起比较就像说热狗和张信哲哪个更厉害一样。华晨宇在参加快乐男声比赛的时候,就依靠极其强烈的个人风格征服了观众和评审,在演唱中放空自己,完全投入在歌曲中的状态,在华语音乐界也少有人相同,并且他的技巧很强,高音很高亢,音域宽,是华语很难得的人才。再看华晨宇目前发表的三张个人专辑,《卡西莫多的礼物》《异类》和《H》,每张专辑都很精良,从专辑中释放出的态度同样是华语音乐中少有的。好音乐很多,但有态度的音乐却不多,华晨宇以选秀歌手的姿态通过天赋和自己的努力,完成了这些成就。三张专辑在华语音乐圈中评价都很高。去年在参加综艺《天籁之战》中,华晨宇再次证明了自己的实力,像

  c:显示进程完整的路径与名称。

  S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。

  s:安全模式。

  i:不显示任何闲置(Idle)或无用(Zombie)的行程。

  n:显示更新的次数,完成后将会退出top。

查看Linux下系统占用的资源(top,free,uptime)(图1)

  图1 top命令的显示

  在图1中,第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。第二行显示的是所有启动的进程、目前运行的、挂起(Sleeping)的和无用(Zombie)的进程。第三行显示的是目前CPU的使用情况,包括系统占用的比例、用户使用比例、闲置(Idle)比例。第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存。第五行显示交换分区使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的大小。第六行显示的项目最多,下面列出了详细解释。

  PID(PRocess ID):进程标示号。

  USER:进程所有者的用户名。

  PR:进程的优先级别。

  NI:进程的优先级别数值。

  VIRT:进程占用的虚拟内存值。

  RES:进程占用的物理内存值。

  SHR:进程使用的共享内存值。

  S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。

  %CPU:该进程占用的CPU使用率。

  %MEM:该进程占用的物理内存和总内存的百分比。

  TIME+:该进程启动后占用的总的CPU时间。

  Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。

  top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。

  <空格>:立刻刷新。

  P:根据CPU使用大小进行排序。

  T:根据时间、累计时间排序。

  q:退出top命令。

  m:切换显示内存信息。

  t:切换显示进程和CPU状态信息。

  c:切换显示命令名称和完整命令行。

  M:根据使用内存大小进行排序。

  W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

  可以看到,top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,它的缺点是会消耗很多系统资源。

  二、free命令

  1.作用

  top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Wi

  free命令用来显示内存的使用情况,使用权限是所有用户。

  2.格式

你好,方法如下:可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,

  free [-b-k-m] [-o] [-s delay] [-t] [-V]

  3.主要参数

必须栓!而且这个问题不能仅仅靠个人素质来自我约束,有关部门应该严格落实城市宠物饲养的相关规定,以期达到制约那些个人素质不高的爱汪人。怎么喜爱宠物是个人的自由选择,但不能“强加”于人,允许你喜欢,也应允许别人不喜欢。别说你的宠物不咬人,不扑人,不抓人,再怎么说,它也是个动物,你的喜爱并不是建立在对动物习性深入研究的基础上的。所以,动物什么时候撒欢(发疯发狂)谁也不知道,一般人对于它们的攻击很难抵挡,遑论老弱妇孺。因此,请爱汪人也相应地尊重一下他人,将自己的宝贝拴着带出去,这样就可以相安无事,各得其所,何乐而不为呢?

  -b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。

  -s delay:显示每隔多少秒数来显示一次内存使用情况。

  -t:显示内存总和列。

  -o:不显示缓冲区调节列。

  4.应用实例

  free命令是用来查看内存使用情况的主要命令。和top命令相比,它的优点是使用简单,并且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有多少内存在使用,这样可以把它当作一个方便实时监控器。

  #free -b -s5

  使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位),每5秒更新一次。

查看Linux下系统占用的资源(top,free,uptime)(图2)

  三、uptime 命令

  在linux系统中,有一种说法,当load avarage <3 系统良好,大于5 则有严重的性能问题。注意,这个值还应当除以CPU数目。

  如果load avarage=8 ,CPU=3,8/3=2.666,2.66这个值表示系统状态良好

  大于5也不一定是严重性能问题,有可能是的确主机提供的服务超过了他能够提供的能力,需要扩容了。要具体看看。

查看Linux下系统占用的资源(top,free,uptime)(图3)

  另外,在linux下查看系统资源的占用情况,还有二个命令,它们分别是:vmstat 与 iostat 。有兴趣的朋友,也可以研究下。

扩展阅读,根据您访问的内容系统为您准备了以下内容,希望对您有帮助。

如何查看linux系统的资源占用情况

free

1.作用

free命令用来显示内存的使用情况,使用权限是所有用户。

2.格式

free [-b-k-m] [-o] [-s delay] [-t] [-V]

3.主要参数

-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。

-s delay:显示每隔多少秒数来显示一次内存使用情况。

-t:显示内存总和列。

-o:不显示缓冲区调节列。追答  top:

主要参数

d:指定更新的间隔,以秒计算。

q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。

c:显示进程完整的路径与名称。

S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。

s:安全模式。

i:不显示任何闲置(Idle)或无用(Zombie)的行程。

n:显示更新的次数,完成后将会退出to

显示参数:

PID(Process ID):进程标示号。

USER:进程所有者的用户名。

PR:进程的优先级别。

NI:进程的优先级别数值。

VIRT:进程占用的虚拟内存值。

RES:进程占用的物理内存值。

SHR:进程使用的共享内存值。

S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。

%CPU:该进程占用的CPU使用率。

%MEM:该进程占用的物理内存和总内存的百分比。

TIME+:该进程启动后占用的总的CPU时间。

Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。

top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。

:立刻刷新。

P:根据CPU使用大小进行排序。

T:根据时间、累计时间排序。

q:退出top命令。

m:切换显示内存信息。

t:切换显示进程和CPU状态信息。

c:切换显示命令名称和完整命令行。

M:根据使用内存大小进行排序。

W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。top free两个命令!

如何查看Linux下系统占用的资源

用 'top -i' 看看有多少进程处于 Running 状态,可能系统存在内存或 I/O 瓶颈,用 free 看看系统内存使用情况,swap 是否被占用很多,用 iostat 看看 I/O 负载情况...

top:

主要参数

d:指定更新的间隔,以秒计算。

q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。

c:显示进程完整的路径与名称。

S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。

s:安全模式。

i:不显示任何闲置(Idle)或无用(Zombie)的行程。

n:显示更新的次数,完成后将会退出to

显示参数:

PID(Process ID):进程标示号。

USER:进程所有者的用户名。

PR:进程的优先级别。

NI:进程的优先级别数值。

VIRT:进程占用的虚拟内存值。

RES:进程占用的物理内存值。

SHR:进程使用的共享内存值。

S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。

%CPU:该进程占用的CPU使用率。

%MEM:该进程占用的物理内存和总内存的百分比。

TIME+:该进程启动后占用的总的CPU时间。

Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。

top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。

<空格>:立刻刷新。

P:根据CPU使用大小进行排序。

T:根据时间、累计时间排序。

q:退出top命令。

m:切换显示内存信息。

t:切换显示进程和CPU状态信息。

c:切换显示命令名称和完整命令行。

M:根据使用内存大小进行排序。

W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

free

1.作用

free命令用来显示内存的使用情况,使用权限是所有用户。

2.格式

free [-b-k-m] [-o] [-s delay] [-t] [-V]

3.主要参数

-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。

-s delay:显示每隔多少秒数来显示一次内存使用情况。

-t:显示内存总和列。

-o:不显示缓冲区调节列。

uptime

18:59:15 up 25 min, 2 users, load average: 1.23, 1.32, 1.21

现在的时间

系统开机运转到现在经过的时间

连线的使用者数量

最近一分钟,五分钟和十五分钟的系统负载

参数: -V 显示版本资讯。

vmstat

procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----

r b swpd free buff cache si so bi bo in cs us sy id wa

0 1 24980 10792 8296 47316 5 19 205 52 1161 698 26 3 1 70

1 观察磁盘活动情况

磁盘活动情况主要从以下几个指标了解:

bi:表示从磁盘每秒读取的块数(blocks/s)。数字越大,表示读磁盘的活动越多。

bo:表示每秒写到磁盘的块数(blocks/s)。数字越大,表示写磁盘的活动越多。

wa:cpu等待磁盘I/O(未决的磁盘IO)的时间比例。数字越大,表示文件系统活动阻碍cpu的情况越严重,因为cpu在等待慢速的磁盘系统提供数据。wa为0是最理想的。如果wa经常大于10,可能文件系统就需要进行性能调整了。

2 观察cpu活动情况

vmstat比top更能反映出cpu的使用情况:

us:用户程序使用cpu的时间比例。这个数字越大,表示用户进程越繁忙。

sy: 系统调用使用cpu的时间比例。注意,NFS由于是在内核里面运行的,所以NFS活动所占用的cpu时间反映在sy里面。这个数字经常很大的话,就需要注 意是否某个内核进程,比如NFS任务比较繁重。如果us和sy同时都比较大的话,就需要考虑将某些用户程序分离到另外的服务器上面,以免互相影响。

id:cpu空闲的时间比例。

wa:cpu等待未决的磁盘IO的时间比例。

iostat

用于统计CPU的使用情况及tty设备、硬盘和CD-ROM的I/0量

参数:

-c 只显示CPU行

-d 显示磁盘行

-k 以千字节为单位显示磁盘输出

-t 在输出中包括时间戳

-x 在输出中包括扩展的磁盘指标

avg-cpu: %user %nice %sys %iowait %idle

20.25 0.18 2.61 76.39 0.57

%iowait 等待本地I/O时CPU空闲时间的百分比

%idle 未等待本地I/O时CPU空闲时间的百分比

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

hda 9.86 284.34 84.48 685407 2036

每秒传输数(tps)、每秒512字节块读取数(Blk_read/s)、每秒512字节块写入数(Blk_wrtn/s)和512字节块读取(Blk_read)和写入(Blk_wrtn)的总数量。

如何查看当前Linux 系统的状态,如CPU 使用,内存使用,负载情况等?

Linux 系统中―/proc‖是个伪文件目录,不占用系统空间,及时的反应出内存现在使用的进程情况......其中许多文件都保存系统运行状态和相关信息对于―/proc‖中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:

cpuinfo 主机CPU 信息

filesystems 文件系统信息

meninfo 主机内存信息

version Linux 内存版本信息

diskstatus 磁盘负载情况

另外top 命令可以动态的显示当前系统进程用户的使用情况,而且是动态的显示出来,尤其是在该命令显示出来的对上方对系统的情况进行汇总.

free 命令呢可以查看真实使用的内存 一般用free -m

使用lsof 、ps -aux 可以查看详细的每个进程的使用状况

dmesg 也是常用来查看系统性能的命令

请参考《Linux就该这么学》入门书籍。

linux系统怎么查看内存和CPU占用情况呀?

1、查看内存:在SSH远程控制端,输入命令“cat /proc/meminfo”,按下“Enter”回车键,即可看到总的内存占用情况。

2、查看CPU:在SSH远程控制端,输入命令“top”,按下“Enter”回车键,即可看到cpu的使用率。

3、Linux上的VNC服务端,比较常用的就是tigervnc和x11vnc。x11vnc可以让远程访问者控制本地的实际显示器,而tigervnc既可以远程控制实际显示器,还可以控制平行独立于当前物理显示器的虚拟显示器。

扩展资料:

top命令是最流行Unix/Linux的性能工具之一。系统管理员可用运行top命令监视进程和Linux整体性能。

对下面执行top命令,得到的Cpu参数进行说明:

cpu状态:

1、0.0% us — 用户空间占用CPU的百分比。

2、0.1% sy — 内核空间占用CPU的百分比。

3、0.0% ni — 改变过优先级的进程占用CPU的百分比

4、99.8% id — 空闲CPU百分比

5、0.0% wa — IO等待占用CPU的百分比

6、0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比

7、0.0% si — 软中断(Software Interrupts)占用CPU的百分比

8、0.0% st— 实时百分比

参考资料:百度百科-top(Linux工具)

linux系统怎样查看服务器性能命令

通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解。

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

其中一些命令需要安装sysstat包,有一些由procps包提供。这些命令的输出,有助于快速定位性能瓶颈,检查出所有资源(CPU、内存、磁盘IO等)的利用率(utilization)、饱和度(saturation)和错误(error)度量,也就是所谓的USE方法。

下面我们来逐一介绍下这些命令,有关这些命令更多的参数和说明,请参照命令的手册。

uptime

$ uptime

23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02

这个命令可以快速查看机器的负载情况。在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。这些数据可以让我们对系统资源使用有一个宏观的了解。

命令的输出分别表示1分钟、5分钟、15分钟的平均负载情况。通过这三个数据,可以了解服务器负载是在趋于紧张还是区域缓解。如果1分钟平均负载很高,而15分钟平均负载很低,说明服务器正在命令高负载情况,需要进一步排查CPU资源都消耗在了哪里。反之,如果15分钟平均负载很高,1分钟平均负载较低,则有可能是CPU资源紧张时刻已经过去。

上面例子中的输出,可以看见最近1分钟的平均负载非常高,且远高于最近15分钟负载,因此我们需要继续排查当前系统中有什么进程消耗了大量的资源。可以通过下文将会介绍的vmstat、mpstat等命令进一步排查。

dmesg | tail

$ dmesg | tail

[1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0

[...]

[1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child

[1880957.563408] Killed process 18694 (perl) total-vm:1972392kB, anon-rss:1953348kB, file-rss:0kB

[2320864.954447] TCP: Possible SYN flooding on port 7001. Dropping request. Check SNMP counters.

该命令会输出系统日志的最后10行。示例中的输出,可以看见一次内核的oom kill和一次TCP丢包。这些日志可以帮助排查性能问题。千万不要忘了这一步。

vmstat 1

$ vmstat 1

procs ---------memory---------- ---swap-- -----io---- -system-- ------cpu-----

r b swpd free buff cache si so bi bo in cs us sy id wa st

34 0 0 200889792 73708 591828 0 0 0 5 6 10 96 1 3 0 0

32 0 0 200889920 73708 591860 0 0 0 592 13284 4282 98 1 1 0 0

32 0 0 200890112 73708 591860 0 0 0 0 9501 2154 99 1 0 0 0

32 0 0 200889568 73712 591856 0 0 0 48 11900 2459 99 0 0 0 0

32 0 0 200890208 73712 591860 0 0 0 0 15898 4840 98 1 1 0 0

^C

vmstat(8) 命令,每行会输出一些系统核心指标,这些指标可以让我们更详细的了解系统状态。后面跟的参数1,表示每秒输出一次统计信息,表头提示了每一列的含义,这几介绍一些和性能调优相关的列:

r:等待在CPU资源的进程数。这个数据比平均负载更加能够体现CPU负载情况,数据中不包含等待IO的进程。如果这个数值大于机器CPU核数,那么机器的CPU资源已经饱和。

free:系统可用内存数(以千字节为单位),如果剩余内存不足,也会导致系统性能问题。下文介绍到的free命令,可以更详细的了解系统内存的使用情况。

si, so:交换区写入和读取的数量。如果这个数据不为0,说明系统已经在使用交换区(swap),机器物理内存已经不足。

us, sy, id, wa, st:这些都代表了CPU时间的消耗,它们分别表示用户时间(user)、系统(内核)时间(sys)、空闲时间(idle)、IO等待时间(wait)和被偷走的时间(stolen,一般被其他虚拟机消耗)。

上述这些CPU时间,可以让我们很快了解CPU是否出于繁忙状态。一般情况下,如果用户时间和系统时间相加非常大,CPU出于忙于执行指令。如果IO等待时间很长,那么系统的瓶颈可能在磁盘IO。

示例命令的输出可以看见,大量CPU时间消耗在用户态,也就是用户应用程序消耗了CPU时间。这不一定是性能问题,需要结合r队列,一起分析。

mpstat -P ALL 1

$ mpstat -P ALL 1

Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/* _x86_64_ (32 CPU)

07:38:49 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle

07:38:50 PM all 98.47 0.00 0.75 0.00 0.00 0.00 0.00 0.00 0.00 0.78

07:38:50 PM 0 96.04 0.00 2.97 0.00 0.00 0.00 0.00 0.00 0.00 0.99

07:38:50 PM 1 97.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 2.00

07:38:50 PM 2 98.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 1.00

07:38:50 PM 3 96.97 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3.03

[...]

该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的。

pidstat 1

$ pidstat 1

Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/* _x86_64_ (32 CPU)

07:41:02 PM UID PID %usr %system %guest %CPU CPU Command

07:41:03 PM 0 9 0.00 0.94 0.00 0.94 1 rcuos/0

07:41:03 PM 0 4214 5.66 5.66 0.00 11.32 15 mesos-slave

07:41:03 PM 0 4354 0.94 0.94 0.00 1.89 8 java

07:41:03 PM 0 6521 1596.23 1.89 0.00 1598.11 27 java

07:41:03 PM 0 6564 1571.70 7.55 0.00 1579.25 28 java

07:41:03 PM 60004 60154 0.94 4.72 0.00 5.66 9 pidstat

07:41:03 PM UID PID %usr %system %guest %CPU CPU Command

07:41:04 PM 0 4214 6.00 2.00 0.00 8.00 15 mesos-slave

07:41:04 PM 0 6521 1590.00 1.00 0.00 1591.00 27 java

07:41:04 PM 0 6564 1573.00 10.00 0.00 1583.00 28 java

07:41:04 PM 108 6718 1.00 0.00 0.00 1.00 0 snmp-pass

07:41:04 PM 60004 60154 1.00 4.00 0.00 5.00 9 pidstat

^C

pidstat命令输出进程的CPU占用率,该命令会持续输出,并且不会覆盖之前的数据,可以方便观察系统动态。如上的输出,可以看见两个JAVA进程占用了将近1600%的CPU时间,既消耗了大约16个CPU核心的运算资源。

iostat -xz 1

$ iostat -xz 1

Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/* _x86_64_ (32 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle

73.96 0.00 3.73 0.03 0.06 22.21

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util

xvda 0.00 0.23 0.21 0.18 4.52 2.08 34.37 0.00 9.98 13.80 5.42 2.44 0.09

xvdb 0.01 0.00 1.02 8.94 127.97 598.53 145.79 0.00 0.43 1.78 0.28 0.25 0.25

xvdc 0.01 0.00 1.02 8.86 127.79 595.94 146.50 0.00 0.45 1.82 0.30 0.27 0.26

dm-0 0.00 0.00 0.69 2.32 10.47 31.69 28.01 0.01 3.23 0.71 3.98 0.13 0.04

dm-1 0.00 0.00 0.00 0.94 0.01 3.78 8.00 0.33 345.84 0.04 346.81 0.01 0.00

dm-2 0.00 0.00 0.09 0.07 1.35 0.36 22.50 0.00 2.55 0.23 5.62 1.78 0.03

[...]

^C

iostat命令主要用于查看机器磁盘IO情况。该命令输出的列,主要含义是:

r/s, w/s, rkB/s, wkB/s:分别表示每秒读写次数和每秒读写数据量(千字节)。读写量过大,可能会引起性能问题。

await:IO操作的平均等待时间,单位是毫秒。这是应用程序在和磁盘交互时,需要消耗的时间,包括IO等待和实际操作的耗时。如果这个数值过大,可能是硬件设备遇到了瓶颈或者出现故障。

avgqu-sz:向设备发出的请求平均数量。如果这个数值大于1,可能是硬件设备已经饱和(部分前端硬件设备支持并行写入)。

%util:设备利用率。这个数值表示设备的繁忙程度,经验值是如果超过60,可能会影响IO性能(可以参照IO操作平均等待时间)。如果到达100%,说明硬件设备已经饱和。

如果显示的是逻辑设备的数据,那么设备利用率不代表后端实际的硬件设备已经饱和。值得注意的是,即使IO性能不理想,也不一定意味这应用程序性能会不好,可以利用诸如预读取、写缓存等策略提升应用性能。

free –m

$ free -m

total used free shared buffers cached

Mem: 245998 24545 221453 83 59 541

-/+ buffers/cache: 23944 222053

Swap: 0 0 0

free命令可以查看系统内存的使用情况,-m参数表示按照兆字节展示。最后两列分别表示用于IO缓存的内存数,和用于文件系统页缓存的内存数。需要注意的是,第二行-/+ buffers/cache,看上去缓存占用了大量内存空间。这是Linux系统的内存使用策略,尽可能的利用内存,如果应用程序需要内存,这部分内存会立即被回收并分配给应用程序。因此,这部分内存一般也被当成是可用内存。

如果可用内存非常少,系统可能会动用交换区(如果配置了的话),这样会增加IO开销(可以在iostat命令中提现),降低系统性能。

sar -n DEV 1

$ sar -n DEV 1

Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/* _x86_64_ (32 CPU)

12:16:48 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil

12:16:49 AM eth0 18763.00 5032.00 20686.42 478.30 0.00 0.00 0.00 0.00

12:16:49 AM lo 14.00 14.00 1.36 1.36 0.00 0.00 0.00 0.00

12:16:49 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

12:16:49 AM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s %ifutil

12:16:50 AM eth0 19763.00 5101.00 21999.10 482.56 0.00 0.00 0.00 0.00

12:16:50 AM lo 20.00 20.00 3.25 3.25 0.00 0.00 0.00 0.00

12:16:50 AM docker0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

^C

sar命令在这里可以查看网络设备的吞吐率。在排查性能问题时,可以通过网络设备的吞吐量,判断网络设备是否已经饱和。如示例输出中,eth0网卡设备,吞吐率大概在22 Mbytes/s,既176 Mbits/sec,没有达到1Gbit/sec的硬件上限。

sar -n TCP,ETCP 1

$ sar -n TCP,ETCP 1

Linux 3.13.0-49-generic (titanclusters-xxxxx) 07/14/* _x86_64_ (32 CPU)

12:17:19 AM active/s passive/s iseg/s oseg/s

12:17:20 AM 1.00 0.00 10233.00 18846.00

12:17:19 AM atmptf/s estres/s retrans/s isegerr/s orsts/s

12:17:20 AM 0.00 0.00 0.00 0.00 0.00

12:17:20 AM active/s passive/s iseg/s oseg/s

12:17:21 AM 1.00 0.00 8359.00 6039.00

12:17:20 AM atmptf/s estres/s retrans/s isegerr/s orsts/s

12:17:21 AM 0.00 0.00 0.00 0.00 0.00

^C

sar命令在这里用于查看TCP连接状态,其中包括:

active/s:每秒本地发起的TCP连接数,既通过connect调用创建的TCP连接;

passive/s:每秒远程发起的TCP连接数,即通过accept调用创建的TCP连接;

retrans/s:每秒TCP重传数量;

TCP连接数可以用来判断性能问题是否由于建立了过多的连接,进一步可以判断是主动发起的连接,还是被动接受的连接。TCP重传可能是因为网络环境恶劣,或者服务器压力过大导致丢包。

top

$ top

top - 00:15:40 up 21:56, 1 user, load average: 31.09, 29.87, 29.92

Tasks: 871 total, 1 running, 868 sleeping, 0 stopped, 2 zombie

%Cpu(s): 96.8 us, 0.4 sy, 0.0 ni, 2.7 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st

KiB Mem: 25190241+total, 24921688 used, 22698073+free, 60448 buffers

KiB Swap: 0 total, 0 used, 0 free. 554208 cached Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

20248 root 20 0 0.227t 0.012t 18748 S 3090 5.2 29812:58 java

4213 root 20 0 2722544 64640 44232 S 23.5 0.0 233:35.37 mesos-slave

66128 titancl+ 20 0 24344 2332 1172 R 1.0 0.0 0:00.07 top

5235 root 20 0 38.227g 547004 49996 S 0.7 0.2 2:02.74 java

4299 root 20 0 20.015g 2.682g 16836 S 0.3 1.1 33:14.42 java

1 root 20 0 33620 2920 1496 S 0.0 0.0 0:03.82 init

2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd

3 root 20 0 0 0 0 S 0.0 0.0 0:05.35 ksoftirqd/0

5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H

6 root 20 0 0 0 0 S 0.0 0.0 0:06.94 kworker/u256:0

8 root 20 0 0 0 0 S 0.0 0.0 2:38.05 rcu_sched

top命令包含了前面好几个命令的检查的内容。比如系统负载情况(uptime)、系统内存使用情况(free)、系统CPU使用情况(vmstat)等。因此通过这个命令,可以相对全面的查看系统负载的来源。同时,top命令支持排序,可以按照不同的列排序,方便查找出诸如内存占用最多的进程、CPU占用率最高的进程等。

但是,top命令相对于前面一些命令,输出是一个瞬间值,如果不持续盯着,可能会错过一些线索。这时可能需要暂停top命令刷新,来记录和比对数据。

总结

排查Linux服务器性能问题还有很多工具,上面介绍的一些命令,可以帮助我们快速的定位问题。例如前面的示例输出,多个证据证明有JAVA进程占用了大量CPU资源,之后的性能调优就可以针对应用程序进行。

  • 本文相关:
  • Ubuntu 连不上网怎么办?
  • linux定时运行命令
  • 如何在RAID软磁盘阵列上搭建linux系统
  • linux删除用户组和inux添加用户组
  • 在Linux桌面上随意使用Windows文档的方法
  • Linux远程登录和无密码登录方法
  • Linux中常用的压缩和解压缩命令汇总
  • Linux下必须知道的11个网络命令
  • Linux中环境变量配置文件详解
  • Linux进程和线程的基础与管理
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved