月度归档:2013年10月

判断linux服务器过载状况

需要查到当前系统的负载,可以通过uptime命令获取

uptime
18:14:08 up 128 days,  9:09,  1 user,  load average: 0.24, 5.05, 5.82

几个部分分别表示,当前系统时间,系统运行时间,当前用户数,系统负载:

怎么理解负载,通俗一点儿讲就是当前CPU的状态,假如这个值远远超过了某个值,那么表示你的服务器已经超过了工作范围,你就要小心你的boss给你打电话了。

这个值一共有三个,分别表示1分钟,5分钟,15分钟的cpu负载值。这个值应该在某个值以下,如果过小,你就可以考虑你的服务器有点儿闲着没事儿干,有点儿浪费资源了。

说到底需要一个临界值N

N是多少,大部分人说N应该介于0.7/核,是比较理想的状态。

查看cpu数目:

cat /proc/cpuinfo | grep 'model name' | wc -l
4

当前服务器有4个cpu。

查看每个cpu的核数:

cat /proc/cpuinfo | grep 'cpu core' | wc -l
cpu cores	: 4

当前服务器的每个CPU有四个核。
那么这个临界值应该是4*4*0.7 = 11.2

这里有几个值,需要警戒,如果你是运维人员,注意:

1.0/核 你需要解决你的系统问题,因为,表示没有剩余的cpu资源可以使用。
5.0/核 这个是个峰值,出现这个值,表示你的系统可能已经瘫痪了,总之不要让这个值出现。

当出现这个问题的时候,可以用top定位出现问题的进程,然后进而进行细节处理。

top
 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND           
21602 tomcat6   20   0  470m 192m 3720 S    6  4.8   6118:33 java               
 2389 tianmens  20   0  2852 1136  872 R    0  0.0   0:00.01 top                
    1 root      20   0  3524 1580 1008 S    0  0.0   2:01.67 init               
    2 root      20   0     0    0    0 S    0  0.0   0:00.72 kthreadd           
    3 root      20   0     0    0    0 S    0  0.0   8:42.57 ksoftirqd/0        
    6 root      RT   0     0    0    0 S    0  0.0   0:07.93 migration/0        

默认的排是按照PID排序,可以在运行当中键入命令改变:包含的内部命令如下表:
s – 改变画面更新频率
l – 关闭或开启第一部分第一行 top 信息的表示
t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的顺序排列表示进程列表
P – 以 CPU 占用率大小的顺序排列进程列表
M – 以内存占用率大小的顺序排列进程列表
h – 显示帮助
n – 设置在进程列表所显示进程的数量
q – 退出 top
s – 改变画面更新周期

top出现的几列分别表示进程对系统的使用状况,关键的几列分别表示:
PID USER %CPU %MEM TIME+ COMMAND
进程PID 运行用户 CPU占用 内存占用 运行时间 运行命令
定位到进程以后,可以用
top -pPID来检查某一个进程的变动值