小弟10分钟教你Linuxtop命令。这种情况怎么办,大家的第一反应肯定是登录服务器,先敲一个top命令,看看LoadAverage。今天的文章就来告诉大家如何看待这个“LoadAverage”。LoadAverage很多人说LoadAverage指标可以表示系统负载高,这句话是对的。那么压力到底在哪里呢?这三个数字是如何计算出来的?很多人可能一下子说不完。先说定义:一段时间内,CPU正在处理和等待CPU处理的进程数的总和。三个数字分别代表1分钟、5分钟、15分钟的统计数据。所以这个值确实可以反映服务器的负载情况。但是数值高并不直接说明这台机器的性能有问题。可能是因为CPU密集型计算,也可能是因为I/O问题阻塞了运行队列。所以,当我们看到这个数值飙升的时候,我们要具体问题具体分析。直接升级机器简单粗暴,但治标不治本。top命令逐行输出了很多参数。我们需要结合其他参数查看真实的服务器负载。top-20:41:08up18days,5:24,2users,loadaverage:0.04,0.03,0.05top:currenttimeup:机器运行了多长时间users:当前有多少用户loadaverage:1在过去的分钟、5分钟、15分钟的负载需要关注loadaverage这三个值。大家都知道一个CPU在一个时间片内只能运行一个进程,而CPU核数的多少直接影响到机器同时运行的进程数。所以一般来说,LoadAverage的取值不要超过本机的核心总数,基本没有问题。Tasks:216total,1running,215sleeping,0stopped,0zombieTasks:当前有多少个进程正在运行:Running进程sleeping:休眠进程stopped:Stoppedprocesseszombie:运行的僵尸进程越多,自然压力越大服务器大。%Cpu(s):0.2us,0.1sy,0.0ni,99.8id,0.0wa,0.0hi,0.0si,0.0stus:用户进程CPU使用率sy:系统进程CPU使用率ni:用户进程空间改变优先级id:idleCPU占用率wa:等待输入输出的CPU时间百分比hi:硬件中断请求si:软件中断请求st:窃取时间这一行代表CPU占用率,us长时间过高,说明用户进程正在占用大量CPU时间。如果us+sy长期超过80或90,可能是CPU性能不足,需要加CPU。KiBMem:总计65810456,免费30324416,已使用9862224,25623816buff/cacheKiB交换:总计7999484,免费7999484,已使用0。54807988availMemtotal:totalmemoryfree:freememoryused/readcache:usedcachebuffercache的第四行和第五行分别是内存信息和swap信息。所有程序都运行在内存中,因此内存性能对于服务器来说非常重要。但是当内存free变少的时候,我们就不用太紧张了。你真正需要看到的是Swap中使用过的信息。Swap分区是硬盘提供的交换区。当物理内存不够用时,操作系统会将暂时不用的数据放到Swap中。所以当这个值变高的时候,就说明内存真的不够用了。PID用户prnivirsss%cpu%memtime+命令19868root20019.733g36998015180S0.70.6129:53.91Java19682root20019.859G22255555546:42.81:进程idUSER:进程所有者PR:优先级。值越大优先级越高NI:nice值,负值表示高优先级,正值表示低优先级VIRT:进程使用的虚拟内存总量SWAP:进程使用的换出虚拟内存大小进程RES:进程已使用,未换出物理内存大小SHR:共享内存大小SHR:共享内存大小S:进程状态。D表示不间断休眠状态;R表示运行;S表示睡眠;T表示跟踪/停止;Z表示僵尸进程。%CPU:从上次更新到现在的CPU使用率百分比;%MEM:进程使用物理内存的百分比;TIME+:进程使用的CPU总时间,单位1/100秒;COMMAND:命令名/命令行这些是进程信息,从这里可以看到哪些进程占用了系统资源的概况。其他命令top当然是我们最常用的查看系统状态的命令了。还有许多其他命令。vmstat、w、uptime和iostat是常用的命令。综上所述,了解了这些具体的参数后,你就会知道你的代码哪方面需要改进,是优化内存消耗还是优化你的代码逻辑。当然无脑机器也可以,只要能说服老板就行!
