java cpu io高_服务器负载过高问题分析-不是cpu高负载也不是IO负载如何处理(阿里 几乎是必考题)...

关于top命令 经常问load average 参考:load average 定义(网易面试)

问题现象:

1,top命令查询服务器负载达到2.0-5之间,tomcat的cpu使用率达到104%

2cf0785f3511b078d523fa98c3d18018.png

load average:

linux系统中的Load对当前CPU工作量的度量。简单的说是进程队列的长度。

Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均 Load 。

问题分析过程:

1),磁盘使用率未超出正常范围

df -l

681576e616f0f5ca01c5df90a1e6b583.png

2),内存使用率未超出正常范围还有空闲

free

3e3122374579f7c9c8da2983dae66e33.png

free -m 查看linux系统内存使用量和交换区使用量,如图所示。

f241c9b6c88073cf405196b301c9e5e6.png

3),服务器流量未现明显峰值

cf8ca29ad26b145f21849d3aacb90f13.png

4)jvm内存状态未现异常非GC原因

ae91b36346acba7d1d417bed0cde23b3.png

至于具体的jstat jmap jstack 的使用情况

综合初步预估是tomcat有线程一直在运行占用cpu资源

问题引出:如何确定tomcat的100%的cpu使用率到底问题在哪?

问题定位方案:

使用java提供的是jstack线程分析命令对进程里面的线程状态进行分析,先导出线程快照再分析具体是那个线程及对应的类

执行步骤:

第一步:ps -ef|grep tomcat 查询出java/tomcat进程PID(eg:8209)

第二步:ps -aux 查询出该进程是哪个用户启动的(即使ROOT用户可能也导出线程快照失败)

9fe99578effabcf92e872c3d5c0ff59e.png

第三步:su  tomcat 切换到进程启动用户

第四步:jstack -l 8209 > /usr/local/work/tomcat/8209.stack 导出PID对应的线程信息到文件

第五步:对导出的线程文件下载本地做分析(可以文本打开)

第六步:top -H -p 8209 命令查看对应进程是哪个线程占用CPU过高(eg:8308)

9e660da0b7877503d8e49cc3739a1b87.png

第七步:printf "%x\n" 8308 转换十进制为十六进制 此处为:2074

第八步:在导出的堆栈文件中搜索线程ID等于nid=0x2074的线程,此处即列出了该线程对应的类

b37c8fbab955e72d5f1f0518759f9b8d.png

第九步:根据线程信息找到对应的类定位问题成功,找到原因:日志队列线程一直处于RUNNABLE状态,一直在while循环判定队列是否为空

2df36a20ad842a1e22553f53f3af3bf9.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/554950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MaxCompute开发笔记——快速入门

前提条件 请确保以下工作已经完成: 开通阿里云账号。 购买MaxCompute。 创建要使用的项目空间,详情请参见创建空间。如果要使用的项目空间已存在,请确保已被添加至此项目空间并被赋予建表等权限。 完成客户端安装配置。 导入数据 Tunn…

java中android_在Android中用纯Java代码布局

本文的完成了参考了一篇国外的教程,在此表示感谢。Android中的界面布局主要有两种方式,一种是xml文件和Java代码结合的布局方式,一种是完全依靠Java代码布局。两种布局方式的比较对于第一种方式,大多数人都比较熟悉,在这里就不细说…

DataWorks概述

文章目录一、DataWorks概况1.1 定义1.2 功能1.3 与MaxCompute的关系二、基于DataWorks与MaxCompute构建云数仓一站式大数据开发治理DataWorks学习DataWorks 是什么?产品定位产品受众核心能力数据治理的概念、需求层次和目标对于数据治理概念的一些基本理解数据治理的…

Dataworks的使用——详细说明

一、开通Dataworks (1)百度搜Dataworks,进入如下页面,点击立即开通 (2) 这里要选好自己想要的配置,这里展示我之前的配置 解决方案:选DataWorksMaxCompute组合产品 DataWorks&…

DataWorks快速入门

快速入门 入门概述 说明 如果您是第一次使用DataWorks,请确认已经根据准备工作模块的操作,准备好账号和工作空间角色等内容后,登录DataWorks控制台,单击相应工作空间后的进入数据开发,即可进行数据开发操作。本模块的…

php.amazeui,AmazeUI 导航条的实现示例

拥有易用的导航条对于任何网站都很重要。本文主要介绍了AmazeUI 导航条的实现示例,分享给大家,具体如下:导航条Amaze UI导航切换 首页项目下拉 标题1. 去月球2. 去火星3. 还是回地球4. 下地狱5. 桥头一回首其他 注册随便看看登录....am-topba…

JNDI用法详解

JNDI全称(Java Naming and Directory Interface),是java命名和目录接口。它是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。 1、命名的概念与应用 JNDI中的命名(Nam…

BigDecimal保留两位小数

文章目录前言1.代码实现2.方法详解注释前言 在项目中经常会用到小数的一些计算,而float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而&#xff…

DataIntegrityViolationException: Error attempting to get column ‘xx‘——DataIntegrityViolationExceptio

一、解决办法 项目中在更新数据库时出现异常,org.springframework.dao.DataIntegrityViolationException,当然如果控制台直接报这个异常问题的解决估计也不至于让我写篇博客。 先说这个异常代表的含义吧: 这个异常的意思就是在更新&#xff…

Java中new Date插入mysql数据库,数据库时间多一秒问题

这是由于new Date()时,实际上是调用的System.currentTimeMillis()方法,即获得以毫秒为级别的时间戳。 一般数据库表的字段类型datetime/timestamp长度都是设置为0。 MySQL数据库对于毫秒大于500的数据进行进位,所以就造成的MySQL中的时间多一…

学php还是golang,学swoole还是golang

Swoole是一个面向生产环境的 PHP 异步网络通信引擎,使 PHP 开发人员可以编写高性能的异步并发 TCP、UDP、Unix Socket、HTTP,WebSocket 服务。 (推荐学习:swoole视频教程)Swoole 可以广泛应用于互联网、移动通信、企业软件、云计算、网络游戏…

java解析vue对象数组,Java数组

Java提供了一个数据结构,所述数组,其存储相同类型的元件的固定大小的连续集合。数组用于存储数据集合,但将数组视为相同类型变量的集合通常更为有用。您可以声明一个数组变量,例如数字和数字[0],数字[1]和...&#xff…

Java中List的subList()方法及使用注意事项

List<Object> list new Arraylist<>();List<Object> subList list.subList(0, 5);其中subList(0, 5)取得的是下标为0到4的元素,不包含下标为5的元素. java.util.List中的subList方法返回列表中指定的 fromIndex&#xff08;包括 &#xff09;和 toIndex&a…

SpringBoot 实现SSE 服务器发送事件

SSE 全称Server Sent Event&#xff0c;直译一下就是服务器发送事件&#xff0c;一般的项目开发中&#xff0c;用到的机会不多&#xff0c;可能很多小伙伴不太清楚这个东西&#xff0c;到底是干啥的&#xff0c;有啥用 本文主要知识点如下&#xff1a; SSE 扫盲&#xff0c;应…

php多表递归查询,使用公用表表达式的递归查询

微软从SQL2005起引入了CTE(Common Table Expression)以强化T-SQL。公用表表达式 (CTE) 具有一个重要的优点&#xff0c;那就是能够引用其自身&#xff0c;从而创建递归 CTE。递归 CTE 是一个重复执行初始 CTE 以返回数据子集直到获取完整结果集的公用表表达式。当某个查询引用递…

Springboot之整合SSE实现消息推送

Springboot之整合SSE实现消息推送 前言 项目中涉及到部分请求&#xff0c;后端处理时间较长&#xff0c;使用常规Http请求&#xff0c;页面等待时间太长&#xff0c;对用户不友好&#xff0c;故考虑使用长链接进行消息推送&#xff0c;可选方案有WebSocket、SSE&#xff0c;We…

Vue中npm run dev 和 npm run serve区别

在运行vue文件时&#xff0c;需要进行npm操作&#xff0c;但我们发现&#xff0c;有时候用的是npm run serve&#xff0c;而有的时候用的是npm run dev&#xff0c;二者有什么区别 在我们运行一些 vue 项目的时候&#xff0c;输入npm run serve或者 npm run dev的其中一个时&a…

SpringBoot导出数据为PDF

一、SpringBoot导出数据为PDF 1、添加所需依赖 <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.11</version> </dependency> <dependency><groupId>com.itextpdf.…

php安装mem+cache扩展,安装memcached及php扩展

用的是centos系统1、安装memcachedyum -y install memcached安装完成后&#xff0c;memcached -h应该会出现memcached 参数说明2、memcached配置文件vi /etc/sysconfig/memcachedPORT"11210"USER"memcached"MAXCONN"1024"CACHESIZE"64"…

Springboot集成支付宝沙箱支付(完整版)

开发前准备 easy支付官方文档&#xff1a;https://opendocs.alipay.com/open/009ys9 通用版文档&#xff1a;https://opendocs.alipay.com/open/02np94 支付宝沙箱的配置 注册支付宝开发者账户&#xff0c;进入开发者控制台 https://openhome.alipay.com/platform/developer…