`

10条命令,一分钟分析Linux性能问题

 
阅读更多

from:http://mp.weixin.qq.com/s?__biz=MzAwNjY4NTQ4MA==&mid=400797122&idx=1&sn=b73ba049be8699eab97d58792a68676d#rd

 

当你登录到一台存在性能问题的Linux服务器上时,在头一分钟,你会检查什么?

 

我们看看Netflix的性能工程师是怎么做的。

 

Netflix大量使用EC2 Linux服务器,很多时候是用一些较为高层的工具做云或实例层次的分析。不过有时仍然需要登录到某个实例上,运行一些标准的Linux性能工具。

 

在最开始的一分钟内,可以先利用手头的标准Linux工具大致了解性能状况。借助如下10条命令(有些命令需要安装sysstat包),了解系统资源使用状况和正在运行的进程。先检查错误(errors)和饱和度(saturation),再检查资源利用率(resource utilization。饱和度指的是负载已经超过处理能力,像请求队列的长度,等待时间等。

 

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

 

这里要提一下定位性能瓶颈的USE方法。在Brendan Gregg的《System Performance: Enterprise and the Cloud(中译本:《性能之巅:洞悉系统、企业与云计算》)一书中有具体的描述。

 

如果手头有这本书的中译本,可以看一下36页:

 

USE方法(utilizationutilizationerrors)应用于性能研究,用来识别系统瓶颈。一言以蔽之,就是:

 

对于所有的资源,查看它的使用率、饱和度和错误。

 

这些术语定义如下。

 

·         资源:所有服务器物理元器件(CPU、总线……)。某些软件资源也能算在内,提供有用的指标。

·         使用率:在规定的时间间隔内,资源用于服务工作的时间百分比。虽然资源繁忙,但是资源还有能力接受更多的工作,不能接受更多工作的程度被视为饱和度。

·        饱和度:资源不能再服务更多额外工作的程度,通常有等待队列。

错误:错误事件的个数。

 

……

 

USE方法会将分析引导到一定数量的关键指标上,这样可以尽快地核实所有的系统资源。在此之后,如果还没有找到问题,那么可以考虑采用其他的方法。

 

下面具体看一下这10条命令。

 

uptime

 

 

 

 



快速查看平均负载(任务对CPU资源的需求)。输出中的“load average:”后面的三个数字,是系统在1分钟、5分钟和15分钟内的平均负载。表示负载随时间的变化情况。

 

它给出的只是一个较为高层的情况,往往需要借助其他工具进一步确认性能问题,有时候需要通过其他一些指标来了解CPU负载,例如vmstatmpstat



2. dmesg | tail


 

 

 

 

查看最后10条系统消息。查找可能会引发性能问题的错误。千万不要漏掉这一步。

 

3. vmstat 1


 

 

 

 

统计虚拟内存信息。参数1指的是打印1秒内的统计信息。

 

要检查的列:

 

r:运行队列的长度(这个参数的解释,建议参考《性能之巅》一书)。可以更好地确定CPU的饱和度。“r”值大于CPU数则为饱和。

free:以kb为单位的空闲内存。如果这个值很大,说明有足够的空闲内存。下面将介绍的第7条命令——“free -m”,可以更好地解释空闲内存的状态。

si, so:换入的内存和换出的内存。如果它们不为0,说明内存已经耗尽。

us, sy, id, wa, stCPU时间的不同组成部分,是所有CPU的平均数。分别表示用户态时间、系统态时间(内核)、空闲、等待I/O以及窃取时间(stolen time,虚拟化环境下,CPU在其他租户上的开销)。

 

将用户态时间和系统态时间相加,可以判断CPU是否忙碌。如果一直有等待I/O,表明存在磁盘瓶颈。因为任务阻塞等待磁盘I/O,此时CPU是空闲的。可以将等待I/O看作另一种形式的CPU空闲。

 

I/O处理一定会消耗系统态时间。如果系统时间平均占比很高,比如说超过20%,或许可以深入研究一下:可能是内核处理I/O的效率不高。

 

4. mpstat -P ALL 1


 

 

 

 

打印每个CPU的状况。可以检查各CPU的负载是否均衡。比如,如果一个CPU很热,可能是单线程应用造成的。

 

5. pidstat 1


 

 

 

 

pidstat按进程打印CPU的使用情况。循环输出活动进程的信息。可用于观察模式随时间的变化情况。用户也可以把观察到的信息记录下来,以供分析研究。

 

像图中的例子,可以看到有2Java进程消耗了大部分CPU时间。“%CPU”这一列是所有CPU的整体情况,“1591%”这个值表明这2Java进程几乎占用了16CPU

 

6. iostat -xz 1


 

 

 

 

这是了解块设备的一个极佳工具,能看到实际负载和性能信息。

 

r/s, w/s, rkB/s, wkB/s:分别表示每秒发给磁盘设备的读请求数,每秒发给磁盘设备的写请求数,每秒从磁盘设备读取的KB数,每秒向磁盘设备写入的KB数。可以使用它们表示负载特性。性能问题可能就是由过多的负载造成的。

await:平均I/O响应时间,单位为毫秒。包括排队时间和服务时间。如果它大于预期的平均时间,可能是设备已经饱和,也可能是设备存在问题。

avgqu-sz:提交到设备的平均请求数。如果大于1,设备可能已经饱和。

%util:设备使用率。设备忙于处理请求的百分比。如果大于60%,通常会导致较差的性能(可以在await中看出来),不过也与具体的设备有关。如果接近100%,通常意味着设备已经饱和。

 

如果存储设备是后面有多块磁盘支撑的逻辑磁盘,即使设备使用率是100%,后端磁盘也可能远没有饱和,而是还能处理更多工作。

 

7. free -m


 

 

 

 

主要看最右边的两列:

 

buffers:用于块设备I/O的缓冲区高速缓存的大小。

cached:文件系统使用的页缓存大小。

 

我们只需要检查这两个值,如果它们接近0,则会导致更高的磁盘I/O(可以使用iostat确认),性能更糟。图中的例子,这个状况看上去还不错。

 

8. sar -n DEV 1


 

 

 

 

使用该工具检查网络接口的吞吐量,以rxkB/stxkB/s为手段测量负载。

 

9. sar -n TCP,ETCP 1


 

 

 

 

这是一些关键TCP指标的总结。其中包括:

 

active/s:每秒本地发起的TCP连接数(比如通过connect())。

passive/s:每秒远端发起的TCP连接数(比如通过accept())。

retrans/s:每秒TCP重传数。

 

activepassive连接数通常用于粗略地测量服务器负载。方便起见,可以把active看作向外的连接,把passive看作向内的连接;不过也有不严格之处,比如考虑从localhostlocalhost的连接。

 

重传数是网络或服务器问题的一个信号:可能是网络不可靠;也可能是服务器过载和丢包。像图中的例子,每秒只有一个新的TCP连接。

 

10. top


 

 

 

 

top命令包含很多前面检查过的指标。可以用个命令来检查是不是有指标和之前命令的输出差距很大。

 

top命令有个缺点,很难看出某个指标随时间的变化模式,这种情况下用像vmstatpidstat这样的命令可能更清楚,它们能提供滚动输出。间歇性问题的一些迹象,如果不能足够快地暂停输出(Ctrl-S暂停,Ctrl-Q继续),可能会错过。

 

  • 大小: 14 KB
  • 大小: 83.3 KB
  • 大小: 79.9 KB
  • 大小: 106 KB
  • 大小: 160.6 KB
  • 大小: 112.7 KB
  • 大小: 24.6 KB
  • 大小: 105.4 KB
  • 大小: 104.5 KB
  • 大小: 194.8 KB
分享到:
评论

相关推荐

    Linux服务器性能测试分析命令大全

    Linux服务器性能测试分析是指利用一系列的Linux命令和工具来评估和优化服务器运行状态,从而确保服务器能够高效、稳定地运行。性能测试的主要目的是发现系统的瓶颈并进行相应的调整和优化,提升系统的整体性能。 在...

    用十条命令在一分钟内检查Linux服务器性能.rar

    本资源“用十条命令在一分钟内检查Linux服务器性能”提供了一个实用的方法集,帮助管理员快速掌握系统运行状态。以下是对这十条命令的详细解释: 1. **top命令**:这是实时查看系统资源利用率的最常用工具,可以...

    Linux性能分析基础

    Linux性能分析是优化系统效率和解决性能问题的关键技术。它主要关注系统运行的各个层面,包括硬件资源、操作系统、服务器软件、开发平台、中间件软件以及应用程序。通过对这些环节进行深入分析,我们可以找出系统...

    Linux 下使用 NMON 分析系统性能

    例如,下面的命令将设置NMON每隔10秒采集一次数据,总共采集60次(相当于10分钟),并将数据保存至`/home/`目录下的以当前时间为后缀的NMON文件中: ```bash nmon -s 10 -c 60 -f -m /home/ ``` 其中,`-s`参数...

    linux performance tools linux performance tools

    ### Linux性能工具详解 在IT领域,特别是针对服务器管理和优化方面,Linux系统因其开源性和高度可定制性而受到广泛欢迎。然而,在实际操作过程中,如何有效地监控和优化系统的性能成为了一个不可忽视的话题。本文将...

    Linux top 命令详解

    Linux top 命令是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器。下面详细介绍它的使用方法。 认识 top 的显示结果 ------------------- top 命令的显示...

    Linux系统性能测试

    综上所述,Linux系统性能测试涉及多个层面,从基本的文件系统监控到复杂的多处理器系统分析,都需要相应的工具和技术支持。通过合理运用这些工具,我们可以有效地优化系统性能,提高服务器的响应速度和稳定性。

    linux sar命令的使用

    在Linux环境下,`sar`(System Activity Reporter)是一款极其重要的性能监控工具。它能够收集并报告系统的各种活动数据,从而帮助系统管理员进行性能分析与故障排查。`sar`命令是sysstat软件包的一部分,此软件包还...

    Linux性能监测命令示例.pdf

    **总结**,Linux的top命令是一个强大的性能监控工具,它提供了丰富的系统状态信息和交互式操作,使得管理员能实时查看和分析系统资源的使用情况,从而有效地管理和优化系统性能。通过熟练掌握top命令的使用,可以...

    最好用的Linux性能监测工具.pdf

    性能监测是一个持续的过程,需要管理员不断地监控、分析和调优。因此,选择合适的监测工具和合理地配置它们的监测参数,对于维护Linux系统的健康状况和提升用户体验至关重要。同时,除了上述提到的命令行工具之外,...

    Linux命令大全和部分疑难问题的解决方法

    本文主要针对Linux的基本命令进行详解,并提供一些解决疑难问题的方法。 首先,Linux的启动流程包括登录系统,通常使用root用户来获取最高权限,登录后会看到一个“#”提示符,表示你已成功登录。"Red Hat Linux ...

    Linux性能测试工具.docx

    当系统出现性能问题时,我们可以利用一系列的工具来定位问题所在。这些工具通常从Linux的/proc虚拟目录获取实时运行状态信息,该目录提供了关于系统硬件、进程、内存等各方面的详细数据。以下是对几个常用性能测试...

    Linux中top命令参数介绍及查询结果详细分析

    ### Linux中top命令参数介绍及查询结果详细分析 #### 一、top命令概述 ...它不仅能够帮助系统管理员及时发现系统性能瓶颈所在,还能有效提高问题定位和解决的效率,是每一位Linux用户的必备工具之一。

    linux实用命令常用命令

    ### Linux实用命令详解:初学者指南 Linux作为全球范围内广泛使用的操作系统之一,其强大的功能和灵活性深受技术爱好者和专业人士的喜爱。...熟练运用这些命令,将极大地提高在Linux环境下的工作效率和问题解决能力。

    linux常用命令整理文档,免费下载(推荐)

    - `shutdown -h +10`:10分钟后关机。 - `shutdown -c`:取消预定的关机。 - `logout`:退出当前用户会话。 2. **系统信息查询**: - `who am i`:显示当前用户的终端信息。 - `cat /proc/version`:查看操作...

    Linux 性能监测工具及调优介绍

    本篇将详细介绍几种常用的Linux性能监测工具及其用途,帮助管理员更好地理解系统状态,及时发现并解决性能瓶颈。 1. **uptime** `uptime`命令提供了一个快速查看服务器运行状态的方法。它显示了系统运行的时间、...

    使用top命令分析linux系统性能的详解

    这篇文章将详细介绍如何使用`top`命令来分析Linux系统的性能。 首先,`top`命令的基本作用是展示当前系统中各个进程的资源占用情况,与Windows的任务管理器类似。在屏幕上,它会动态更新信息,允许用户实时查看系统...

    Linux必学的60个命令

    - **应用技巧**:`top`命令可以帮助系统管理员监控系统性能和诊断问题。通过观察CPU使用率、内存使用情况等指标,可以迅速定位资源消耗高的进程。 8. **free** - **作用**:显示系统中空闲、已使用及总的物理内存...

    Linux服务器性能评估与优化

    #### 四、Linux性能评估与优化实例 接下来,我们将通过具体实例来探讨如何进行Linux服务器的性能评估与优化: 1. **系统整体性能评估**: - 使用`uptime`命令可以获得系统的整体运行状态,包括已运行时间、登录...

Global site tag (gtag.js) - Google Analytics