IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> JVM-05-02--系统性能排查 -> 正文阅读

[系统运维]JVM-05-02--系统性能排查

一、什么是load average

top命令中显示的load average,表示最近1分钟、5分钟和15分钟的系统平均负载

在这里插入图片描述

1.1 load average如何计算而来

1、在Linux中,进程分为三种状态,一种是阻塞的进程blocked process,一种是可运行的进程runnable process,另外就是正在运行的进程running process。

2、进程可运行状态时,它处在一个运行队列run queue中,与其他可运行进程争夺CPU时间。 系统的load是指正在运行和准备好运行的进程的总数。比如现在系统有2个正在运行的进程,3个可运行进程,那么系统的load就是5。

3、load average就是一定时间内的load数量。如15分钟内load average=5/15。

1.2 影响系统负载高的因素有哪些

Load高代表需要运行的进程累计过多,影响因素有2个:

1、队列中的任务耗cpu(如加密/解密、序列化/反序列化、当锁争用激烈时导致线程上下文频繁切换、死循环)

2、队列中的任务耗IO(如网络IO、磁盘IO较多或较慢)

换句话说:系统负载,最终由CPU负载、IO负载决定

1.3 什么样的系统负载是正常的?

1、把系统负载除以总的核心数,只要每个核心的负载不超过1.0,就表明系统负载正常。(即 n核cpu时,只要load<n,就认为系统负载是正常的)

2、理想状态下,都希望负载load值小于 1.00 ,当然不排除部分峰值会超过 1.00,但长此以往保持这 个状态,就说明会有问题。(即高峰时偶尔超过1没事,经常超过1就需要注意了)

3、负载为1.00 说明系统已经没有剩余的资源了,生产环境中,系统负载应保持在0.7以下。

1.3.1 系统负载是否正常分析举例

一个4核的cpu的系统,通过apm工具监控到它的系统负载图如下:

在这里插入图片描述

1、首先观察load_15m和load_5m,load基本保持在3-5之间,说明系统中长期负载保持在一个较高的量级(load average/4约等于1)。

2、再观察load_1m可以看出,波动很大,并且很多时间段内远大于cpu核心数,很可能是一个拥塞的开始,需要分析处理。

二、load高并且cpu低是什么原因

CPU负载不高,但I/O负载较高:可进一步定位是磁盘I/O还是网络I/O导致。

如何定位是哪种,详细参考:https://segmentfault.com/a/1190000025167113

三、java应用程序–load高并且cpu高是什么原因

java应用程序中,常见的导致cpu高的原因有:

1、while的无限循环
无限循环将调用CPU寄存器进行计数,此操作将占用CPU资源。
那么,如果线程始终处于无限循环状态,CPU是否会切换线程?–》除非操作系统时间片到期,否则无限循环不会放弃占用的CPU资源,并且无限循环将继续向系统请求时间片,直到系统没有空闲时间来执行任何其他操作。

2、频繁的GC
GC用于JVM垃圾收集,它需要计算内存和调用寄存器,因此,频繁的GC必须占用CPU资源。

3、线程上下文切换
有许多已启动的线程,这些线程的状态在Blocked(锁定等待,IO等待等)和Running之间频繁发生变化。【当锁争用激烈时,这种情况很容易发生】
4、序列化和反序列化
5、加密和解密

抓住2个点:频繁切换或大量计算,或导致cpu使用率高

注意点:

1、具有大量线程的应用程序,CPU使用率一定高吗?
答案:不一定

因为如果线程很多,但处于Runnable和Running状态的线程数不多,则CPU使用率不一定很高。

2、对于CPU占用率高的应用程序,线程数是否一定较大?
答案:不一定。

高CPU使用率的关键因素是计算密集型操作。如果一个线程中有大量计算,则CPU使用率也可能很高。

3、处于BLOCKED状态的线程是否会导致CPU占用率飙升?
答案:不一定。

CPU使用率的飙升更多是由于上下文切换或过多的可运行状态线程,处于阻塞状态的线程不一定会导致CPU使用率上升。

四、全面的系统性能排查

在这里插入图片描述

详细参考:https://segmentfault.com/a/1190000025167113

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:28:46  更:2022-04-06 16:33:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:01:22-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码