一:用十条命令在一分钟内检查Linux服务器性能
二:linux 服务器性能监控
三:分分钟拯救监控知识体系
四:中小企业监控体系构建实战
linux服务器性能调优
https://www.cnblogs.com/ace-lee/p/6628079.html
观其大纲:
零:基础概念
01 -负载均值(load averages)
一:用十条命令在一分钟内检查Linux服务器性能
01 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
二:linux 服务器性能监控
CPU、内存以及硬盘的关系是怎样的?
进程和线程是什么?有什么区别?有什么优缺点?
什么是物理内存?什么是虚拟内存?什么时候要用到虚拟内存?
什么是CPU中断?CPU上下文切换?CPU缺页计算?
怎么理解系统负载?如何通过load average的值来判断系统负载是否过高?
三:分分钟拯救监控知识体系
四:中小企业监控体系构建实战
熟知概念
零:基础概念
01 负载均值(load averages)
- 一、什么是系统平均负载(Load average)?
在Linux系统中,uptime、w、top等命令都会有系统平均负载load average的输出,那么什么是系统平均负载呢?
Load Average是CPU的Load,它所包含的信息不是CPU的使用率状况,而是在一段时间内CPU正在处理以及等待CPU处理的进程数之和的统计信息,也就是CPU使用队列的长度的统计信息。
系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数。
如果一个进程满足以下条件则其就会位于运行队列中:
- 它没有在等待I/O操作的结果
- 它没有主动进入等待状态(也就是没有调用'wait')
- 没有被停止(例如:等待终止)
例如:
[root@opendigest root]# uptime
7:51pm up 2 days, 5:43, 2 users, load average: 8.13, 5.90, 4.94
命令输出的最后内容表示在过去的1、5、15分钟内运行队列中的平均进程数量。
一般来说只要每个CPU的当前活动进程数不大于3那么系统的性能就是良好的,如果每个CPU的任务数大于5,那么就表示这台机器的性能有严重问 题。对于上面的例子来说,假设系统有两个CPU,那么其每个CPU的当前任务数为:8.13/2=4.065。这表示该系统的性能是可以接受的。
二、Load average的算法
上面的输出数据是每隔5秒钟检查一次活跃的进程数,然后根据这个数值算出来的。如果这个数除以CPU的数目,结果高于5的时候就表明系统在超负荷运转了。算法摘自Linux 内核代码。三、/proc/loadavg 各项数据的含义
/proc文件系统是一个虚拟的文件系统,不占用看/pro磁盘空间,它反映了当前操作系统在内存中的运行情况,查c下的文件可以了解到系统的运行状态。查看系统平均负载使用“cat /proc/loadavg”命令,输出结果如下:
0.27 0.36 0.37 4/83 4828/
前三个数字大家都知道,是1、5、15分钟内的平均进程数(有人认为是系统负荷的百分比,其实不然,有些时候可以看到200甚至更多)。后面两个呢,一个的分子是正在运行的进程数,分母是进程总数;另一个是最近运行的进程ID号。四、查看系统平均负载的常用命令
cat /proc/loadavg
uptime:
w: 显示目前登入系统的用户信息。
top: 显示,管理执行中的程序。
tload : 显示系统负载状况。
一:用十条命令在一分钟内检查Linux服务器性能
01 uptime 快速查看机器的负载情况
$ uptime
23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02
快速查看机器的负载情况。
02 dmesg | tail
该命令会输出系统日志的最后10行。示例中的输出,可以看见一次内核的oom kill和一次TCP丢包。这些日志可以帮助排查性能问题。千万不要忘了这一步。
03 vmstat 1
每行会输出一些系统核心指标,这些指标可以让我们更详细的了解系统状态。后面跟的参数1,表示每秒输出一次统计信息
04 mpstat -P ALL 1
该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的。
05 pidstat 1
pidstat命令输出进程的CPU占用率,该命令会持续输出,并且不会覆盖之前的数据,可以方便观察系统动态。如上的输出,可以看见两个JAVA进程占用了将近1600%的CPU时间,既消耗了大约16个CPU核心的运算资源。
06 iostat -xz 1
iostat命令主要用于查看机器磁盘IO情况
07 free -m
free命令可以查看系统内存的使用情况,-m参数表示按照兆字节展示。
08 sar -n DEV 1
sar命令在这里可以查看网络设备的吞吐率。在排查性能问题时,可以通过网络设备的吞吐量,判断网络设备是否已经饱和。
09 sar -n TCP,ETCP 1
sar命令在这里用于查看TCP连接状态
10 top
top命令包含了前面好几个命令的检查的内容。比如系统负载情况(uptime)、系统内存使用情况(free)、系统CPU使用情况(vmstat)等。因此通过这个命令,可以相对全面的查看系统负载的来源。同时,top命令支持排序,可以按照不同的列排序,方便查找出诸如内存占用最多的进程、CPU占用率最高的进程等。