当前位置: 首页 > 科技观察

九条命令如何一分钟查看Linux服务器性能?

时间:2023-03-17 11:04:28 科技观察

如何一分钟查看Linux服务器性能?让我们看看下面描述的九个命令。1.uptime命令这个命令可以快速查看机器的负载情况。在Linux系统中,这些数据代表了在不间断IO进程中等待CPU资源和阻塞的进程数(进程状态为D)。这些数据可以让我们从宏观上了解系统资源的使用情况。该命令的输出分别表示1分钟、5分钟和15分钟的平均负载。通过这三个数据,我们可以了解服务器负载是趋于紧张还是趋于缓和。如果1分钟平均负载高,但15分钟平均负载低,说明服务器负载高,需要进一步排查CPU资源消耗在哪里。反之,如果15分钟平均负载高,1分钟平均负载低,有可能已经过了CPU资源紧张的时刻。从上面例子的输出可以看出最近1分钟的平均负载很高,比最近15分钟的负载高很多。因此,我们需要继续查看当前系统中哪些进程消耗了大量资源。可以使用下面介绍的vmstat、mpstat等命令进一步排查。2.dmesg命令会输出系统日志的最后10行。在示例的输出中,您可以看到内核oomkill和TCP数据包丢失。这些日志可以帮助解决性能问题。不要忘记这一步。三、vmstat命令vmstat(8)命令,每一行都会输出一些系统核心指标,这些指标可以让我们更详细的了解系统状态。后面的参数1表示每秒输出一次统计信息。表格的标题表示每一列的含义。这些列介绍了一些与性能调优相关的列:r:等待CPU资源的进程数。这个数据比平均负载更能反映CPU负载,并且该数据不包括等待IO的进程。如果这个值大于机器的CPU核数,说明机器的CPU资源已经饱和。free:系统中的可用内存量(以千字节为单位)。如果剩余内存不足,也会导致系统性能出现问题。下面介绍的free命令可以更详细的了解系统内存的使用情况。si,so:交换区的读写次数。如果这个数据不为0,说明系统已经在使用交换区(swap),机器物理内存不足。us,sy,id,wa,st:这些代表CPU时间的消耗,分别代表用户时间(user)、系统(kernel)时间(sys)、空闲时间(idle)、IO等待时间(wait)和Stolen时间(被盗,一般被其他虚拟机消费)。上面提到的CPU时间可以让我们快速了解CPU是否繁忙。一般情况下,如果用户时间和系统时间之和很大,说明CPU正在忙于执行指令。如果IO等待时间很长,那么系统的瓶颈可能是磁盘IO。从示例命令的输出可以看出,大量的CPU时间消耗在用户态,即用户应用程序消耗CPU时间。这不一定是性能问题。需要和r队列一起分析。4.mpstat命令这个命令可以显示各个CPU的占用情况。如果出现CPU占用特别高的情况,可能是单线程应用导致的。5.pidstat命令pidstat命令输出进程的CPU使用率。该命令会继续输出,不会覆盖之前的数据,方便观察系统动态。从上面的输出可以看出,两个JAVA进程占用了近1600%的CPU时间,消耗了大约16个CPU核的计算资源。6、iostat命令r/s、w/s、rkB/s、wkB/s:分别表示每秒读写次数和每秒读写数据量(千字节)。过多的读写可能会导致性能问题。await:IO操作的平均等待时间,单位毫秒。这是应用程序在与磁盘交互时需要消耗的时间,包括IO等待和实际操作所花费的时间。如果这个值太大,可能是硬件设备遇到了瓶颈或者出现了故障。avgqu-sz:对设备发出的平均请求数。如果该值大于1,则可能是硬件设备饱和(部分前端硬件设备支持并行写入)。%util:设备利用率。该值表示设备的繁忙程度。经验值是,如果超过60,可能会影响IO性能(可以参考IO操作的平均等待时间)。如果达到100%,说明硬件设备已经饱和。如果显示逻辑设备的数据,设备利用率并不代表后端实际硬件设备已经饱和。值得注意的是,即使IO性能不理想,也不代表应用性能一定会差。可以使用预读和写缓存等策略来提高应用程序性能。7、free命令free命令可以查看系统内存的使用情况,-m参数表示会以兆为单位显示。最后两列分别表示用于IO缓存的内存量和用于文件系统页面缓存的内存量。需要注意的是第二行-/+buffers/cache,好像是cache占用了很多内存空间。这是Linux系统的内存使用策略。尽可能使用内存。如果应用程序需要内存,这部分内存会立即被回收并分配给应用程序。因此,这部分内存一般也被认为是可用内存。如果可用内存非常少,系统可能会使用swap区(如果配置的话),这会增加IO开销(可以在iostat命令中取消),降低系统性能。八、sar命令sar命令可以在这里查看网络设备的吞吐率。在排查性能问题时,可以通过网络设备的吞吐量来判断网络设备是否饱和。如示例输出所示,eth0网卡设备的吞吐率约为22Mbytes/s,即176Mbits/sec,未达到1Gbit/sec的硬件上限。这里使用sar命令查看TCP连接状态,包括:active/s:本地每秒发起的TCP连接数,即调用connect建立的TCP连接数;passive/s:每秒远程发起的TCP连接数,即accept调用创建的TCP连接;retrans/s:每秒TCP重传次数;通过TCP连接数可以判断性能问题是否是因为建立的连接过多,进而判断连接是主动发起还是被动接受connect。TCP重传可能是网络环境不好,或者服务器压力大。top命令包含前面命令的检查内容。比如系统负载(uptime)、系统内存使用(free)、系统CPU使用(vmstat)等。因此,通过这个命令,可以比较全面的查看系统负载的来源。同时top命令支持排序,可以按不同的列进行排序,方便找出内存占用最多的进程、CPU占用最高的进程等进程。但是,与之前的一些命令相比,top命令的输出是一个瞬时值。如果你不一直盯着它看,你可能会错过一些线索。这时候可能需要暂停top命令的刷新来记录和对比数据。