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 是什么?产品定位产品受众核心能力数据治理的概念、需求层次和目标对于数据治理概念的一些基本理解数据治理的…

php默认语法,php基本语法

基础 PHP 语法PHP 脚本可放置于文档中的任何位置。PHP 脚本以 <?php 开头&#xff0c;以 ?> 结尾&#xff1a;<?php // 此处是 PHP 代码?>PHP 文件的默认文件扩展名是 ".php"。PHP 文件通常包含 HTML 标签以及一些 PHP 脚本代码。PHP 大小写敏感在 P…

Dataworks的使用——详细说明

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

java读excel乱码,【java 项目中,上传的excel打开时无法正常打开,显示乱码 ,怎样可以正常打开,】java读取excel乱码...

java 项目中&#xff0c;上传的excel打开时无法正常打开&#xff0c;显示乱码 &#xff0c;怎样可以正常打开&#xff0c;1、转换格就是将受损的Excel XP簿另存格式选为SYLK。如果可以打开受件&#xff0c;只是不能进行各种编辑和打印操作&#xff0c;那么建议首先尝试这种方法…

DataWorks快速入门

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

java反射jdk1.8,Java基础----jdk1.8 反射实验

Java基础----jdk1.8 反射实验(写在最前&#xff1a;还没入门的搬砖工的一本正经的胡说八道)引言&#xff1a; 最近做到的项目中&#xff0c;需要给对接方提供一个公共接口&#xff0c;根据对方传入的 XML 文件的 rootelement 分发调用接口&#xff0c;最简单的使用 if-else if…

基于ODPS的SQL语句

&#xff08;一&#xff09;基本概念 1.ODPS&#xff1a;Open Data Processing Service&#xff0c; 简称ODPS&#xff1b;是由阿里云自主研发&#xff0c;提供针对TB/PB级数据、实时性要求不高的分布式处理能力&#xff0c;应用于数据分析、挖掘、商业智能等领域&#xff1b;…

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

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

JNDI用法详解

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

django mongodb mysql,Django MongoDB Django NoSQL方案

1 安装MongoDB1&#xff0c;下载所需要的版本&#xff0c;地址&#xff1a;http://www.mongodb.org/display/DOCS/Downloads2&#xff0c;将MongoDB加入环境变量3&#xff0c;设定好放置数据库文件的路径&#xff0c;比如d:db4&#xff0c;打开CMD&#xff0c;不要关闭这个mong…

BigDecimal保留两位小数

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

matlab人民币识别,MATLAB-OCR 用MATLAB实现人民币纸币金额的识别与统计 - 下载 - 搜珍网...

用MATLAB实现人民币纸币金额的识别与统计/说明.txt用MATLAB实现人民币纸币金额的识别与统计/钞票面额识别与统计/matlab程序及图片/1-1.jpg用MATLAB实现人民币纸币金额的识别与统计/钞票面额识别与统计/matlab程序及图片/1-2.JPG用MATLAB实现人民币纸币金额的识别与统计/钞票面…

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

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

php oracle817,Oracle 817 For Linux/Unix安装文档-数据库专栏,ORACLE

oracle 817安装文档1&#xff0e; 创建dba组和oracle用户roothz_cmode # groupadd dbaroothz_cmode # useradd -m -d /opt/oracle -s /bin/ksh -g dba oracleroothz_cmode # passwd oracle new password:re-enter new password:passwd (system): passwd successfully chan…

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

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

学php还是golang,学swoole还是golang

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

java8 函数编程Consumer使用详解

Consumer 源码 package java.util.function;import java.util.Objects;FunctionalInterface public interface Consumer<T> {void accept(T t);default Consumer<T> andThen(Consumer<? super T> after) {Objects.requireNonNull(after);return (T t) ->…

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

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