服务器的性能指标是服务器状态的反应,如果服务器出现问题,往往反应在这些指标上。
先来看负载的定义:
In UNIX computing, the system load is a measure of the amount of computational work that a computer system performs. The load average represents the average system load over a period of time. It conventionally appears in the form of three numbers which represent the system load during the last one-, five-, and fifteen-minute periods.
load是系统工作量的度量。
load由三部分构成,任意一项激增都可能导致负载过高。
- CPU
- 内存
- IO
查看负载信息的命令有:uptime, top , w
uptime
命令能够打印系统总共运行了多长时间和系统的平均负载。
w命令的主要功能其实是显示目前登入系统的用户信息。但是与who不同的是,w命令功能更加强大,w命令还可以显示:当前时间,系统启动到现在的时间,登录用户的数目,系统在最近1分钟、5分钟和15分钟的平均负载。
当系统负荷持续大于0.7,你必须开始调查了,问题出在哪里,防止情况恶化。
当系统负荷持续大于1.0,你必须动手寻找解决办法,把这个值降下来。
当系统负荷达到5.0,就表明你的系统有很严重的问题,长时间没有响应,或者接近死机了。你不应该让系统达到这个值。
以上指标都是基于单CPU的,但是现在很多电脑都是多核的。所以,对一般的系统来说,是根据cpu数量去判断系统是否已经过载(Over Load)的。如果我们认为0.7算是单核机器负载的安全线的话,那么四核机器的负载最好保持在3(4*0.7 = 2.8)以下。
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。
负载过高可能出现的原因以及解决方法:
- 内存泄露导致频繁GC:jstat, jmap
- 死锁
- 慢sql
常见的Java Web应用Load飙高排查思路:
- uptime
- top 查出进程pid
- top -Hp pid 查出线程tid
- jstatck 能精确到哪个类哪一行
2019-07-12
微观的世界最基本的方法论是什么?
就是统计。
因为微观世界的速度和数量都是天文数字,不能依靠单一数字来做判断,而需要一个统计值。
网友评论