1. uptime命令介绍
Linux系统中的uptime命令主要用于获取主机运行时间和查询Linux系统负载等信息。
uptime命令可以显示系统已经运行了多长时间,信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登录用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。 uptime命令用法十分简单,直接输入uptime即可查看系统负载情况。
2. 语法格式及常用选项
使用帮助命令查看具体的参数和语法格式:
[root@doc ~]# uptime –help
可以看到,uptime后面可以直接跟选项。
参数 |
描述 |
-p |
采用可读友好的格式输出系统已运行时长 |
-h |
–help 显示帮助信息 |
-s |
–since 以格式 yyyy-mm-dd HHSS format 输出系统启动时间 |
-V |
–version 显示版本信息 |
3. 参考案例
3.1 显示当前系统运行负载情况
不加任何参数直接执行uptime,如下:
[root@doc ~]# uptime
以上列出的参数解释:
参数 |
描述 |
22:53:55 |
当前系统的时间 |
up 3:05 |
系统已经运行了3个小时零5分 |
3users |
当前登录用户数 |
load average: 0.00, 0.02, 0.05 |
系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。 |
系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
经验:单核心,1分钟的系统平均负载不要超过3
基于以上经验:
如果服务器的CPU为1核心,则load average中的数字 >=3 负载过高,如果服务器的CPU为4核心,则load average中的数字 >=12 负载过高。
3.2 显示机器正常运行的时间
此处只显示机器的正常运行时间,所以需要用到-参数
[root@mufenggrow ~]# uptime -p
up 3 hours, 12 minutes
可以看到显示的时间为3小时12分钟,这是系统运行时间,一般等于你开机的时间,比如:
[root@master-21 ~]# uptime -p
up 7 hours, 43 minutes
3.3 显示机器启动时间
我们知道系统运行的时间之后,想知道是从哪个时间点运行的,就可以使用-s参数
[root@mufenggrow ~]# uptime -s
2023-01-31 19:48:26
可以看到-s显示的是具体的系统启动运行时间。
3.4 关于平均负载的介绍
平均负载:
平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和CPU使用率并没有直接关系。
- 可运行状态:是指正在使用CPU或者正在等待CPU的进程,也就是ps命令看到的处于R状态的进程
- 不可中断状态:是指正在处于内核态关键流程中的进程,并且这些进程是不可打断的,比如常见的等待硬件设备的IO操作,也就是ps命令看到的处于D状态的进程
不可中断状态是系统对进程和硬件设备的一种保护机制
说通俗点,平均负载其实就是平均活跃进程数。最理想的平均活跃进程数就是每个CPU上都刚好运行着一个进程,这样每个CPU都得到了充分的利用。
当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程或者中断打断的,这个时候的进程就处于不可中断状态。如果此时的进程被打断了,就容易出现磁盘数据与进程数据不一致的问题
除了使用uptime,我们用 cat /proc/loadavg命令也可以查看平均负载:
[root@mufenggrow ~]# cat /proc/loadavg
0.00 0.01 0.05 1/514 14655
前三个数字与uptime一致,后面的:
1/514 表示正在运行的进程数有一个,分母是总进程数
14655 表示正在运行的进程ID为 14655
关于cpu我们之前介绍过一些概念:
CPU个数:即物理CPU数,主板实际插入的CPU数量,可以数不重复的 physical id 有几个(physical id)
CPU核数:单块CPU上面能处理数据的芯片组的数量,如双核,四核等(cpu cores)
逻辑CPU数:一般情况下,逻辑CPU=物理CPU个数x每颗核数。如果不等,表示CPU支持超线程技术
平均负载和cpu个数有一定的关系 比如平均负载为4时意味着什么呢?
多核cpu和多个cpu效果类似
# cat /proc/cpuinfo #查看CPU的信息
# grep -c ‘model name’ /proc/cpuinfo #返回CPU的总核心数
- 在只有4个CPU的系统上,意味着所有的CPU都刚好被完全占用。
- 在8个CPU的系统上,意味着CPU有50%的空闲。
- 而在有2个CPU系统上,意味着有一半的进程竞争不到CPU。
其他经验:
如果1分钟,5分钟,15分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳。
如果1分钟的值远小于15分钟的值,就是说在15分钟之前负载很高,到了1分钟的时候已经下降很多了,甚至负载已经不高了,这时候只需要关注下为什么在15分钟高就行了,不需要介入处理。。
但如果1分钟的值远大于15分钟的值,说明近1分钟负载在增加,这种情况可能是临时性的,也可能还会持续,要持续观察,一旦1分钟的平均负载超过了CPU的数量,意味着系统正在发生过载的问题。
例如:一个单核系统上,平均负载为1.78,0.60,6.56,说明1分钟内,系统有78%的超载,而在15分钟内有556%的超载。
实际生产中,平均负载多高时需要关注
当系统负载持续大于0.7,就要开始排查了,防止情况恶化;
当系统负载持续大于1.0,你就必须手动寻找解决办法,把这个值降下来;
当系统负载达到5.0,就表明你的系统有很严重的问题,长时间没有响应,或者接近死机了,一般不允许让系统达到这个值
常用的性能排查工具
- stress:Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。
- mpstat:是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有CPU的平均指标。
- pidstat:是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net