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

jvm dump的使用 参考:Jvm dump jstack jmap jstat 介绍与使用(内存与线程) 以及使用jstack定位问题

查看端口:如何在Windows,Linux下查看JAVA端口占用情况(阿里)

问题现象:

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

load average:

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

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

问题分析过程:

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

df -l

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

free

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

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

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

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

参考:Jvm dump jstack jmap jstat 介绍与使用(内存与线程) 以及使用jstack定位问题

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

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

问题定位方案:

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

执行步骤:

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

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

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

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

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

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

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

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

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

参考:服务器负载过高问题分析

服务器负载过高问题分析-不是cpu高负载也不是IO负载如何处理(阿里 几乎是必考题)的更多相关文章

  1. 负载(Load)分析及问题排查

    平常的工作中,在衡量服务器的性能时,经常会涉及到几个指标,load.cpu.mem.qps.rt等.每个指标都有其独特的意义,很多时候在线上出现问题时,往往会伴随着某些指标的异常.大部分情况下,在问题 ...

  2. 查看IO负载

    负载(load)是linux机器的一个重要指标,直观了反应了机器当前的状态.如果机器负载过高,那么对机器的操作将难以进行. Linux的负载高,主要是由于CPU使用.内存使用.IO消耗三部分构成.任意 ...

  3. 记一次排查CPU高的问题

    背景 将log4j.xml的日志级别从error调整为info后,进行压测发现CPU占用很高达到了90%多(之前也就是50%,60%的样子). 问题排查 排查思路:  看进程中的线程到底执行的是什么, ...

  4. Linux的虚拟内存管理-如何分配和释放内存,以提高服务器在高并发情况下的性能,从而降低了系统的负载

    Linux的虚拟内存管理有几个关键概念: Linux 虚拟地址空间如何分布?malloc和free是如何分配和释放内存?如何查看堆内内存的碎片情况?既然堆内内存brk和sbrk不能直接释放,为什么不全 ...

  5. sqlserver 索引优化 CPU占用过高 执行分析 服务器检查

    原文:sqlserver 索引优化 CPU占用过高 执行分析 服务器检查 1. 管理公司一台服务器,上面放的东西挺多的.有一天有个哥们告诉我现在程序卡的厉害.我给他说,是时候读点优化的书了.别一天到晚 ...

  6. [Oracle] 某游戏大区DB IO负载过高分析

    某游戏大区DB IO负载过高分析 [问题] 下图信息看出机器IO负载过高, IO使用率: 平均值 50%, 峰值 98%, 业务高峰时间段(19:00-22:00)IO使用率持续80%以上. [分析] ...

  7. Windows服务器java.exe占用CPU过高问题分析及解决

    最近在测试一个用java语言实现的数据采集接口时发现,接口一旦运行起来,CPU利用率瞬间飙升到85%-95%,一旦停止就恢复到40%以下,这让我不得不面对以前从未关注过的程序性能问题. 在硬着头皮查找 ...

  8. IO负载高的来源定位

    前言: 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(iostat中的util),但是无法快速的定位到IO负载的来源进程和来源文件导致无法进行相应的策略来解决问题. 这个现象在MySQ ...

  9. iotop,pt-ioprofile : mysql IO负载高的来源定位

    http://www.cnblogs.com/cenalulu/archive/2013/04/12/3016714.html 前言: 在一般运维工作中经常会遇到这么一个场景,服务器的IO负载很高(i ...

随机推荐

  1. The Xor-longest Path(trie树)

    题目: #10056. 「一本通 2.3 练习 5」The XOR-longest Path 解析: 做完#10051后就不是很难了 继续利用异或的性质有\(dis(u,v) = dis(1,u)\o ...

  2. 编写可维护的JavaScript-随笔(三)

    UI层的松耦合 本章提出了一个概念就是耦合 假设修改一个组件的时候需要修改很多其他的组件的话则表示组件之间存在紧耦合 如果修改一个组件而不需要修改其他组件的时候就做到了松耦合 页面是由HTML.CSS ...

  3. JavaScript 变量与注释

    一.变量 ECMAScript 的变量是松散类型的,所谓松散类型就是可以用来保存任何类型的数据. 换句话说,每个变量仅仅是一个用于保存值的占位符而已.定义变量时要使用 var 操作符(注意 var 是 ...

  4. 内网漫游之SOCKS代理大结局

    0×01 引言 在实际渗透过程中,我们成功入侵了目标服务器.接着我们想在本机上通过浏览器或者其他客户端软件访问目标机器内部网络中所开放的端口,比如内网的3389端口.内网网站8080端口等等.传统的方 ...

  5. RabbitMQ启动出现的问题与解决办法

    问题1 使用命令启动 service rabbitmq-server start 报错如下: Starting rabbitmq-server (via systemctl): Job for rab ...

  6. AF step、Bokeh等说明

    基本概念:FV: Focus Value, 用来衡量图像AF的清晰度. DOF: Deep Of Field, 景深,表示物距清晰的范围,景深越长表示物距前后清晰的范围越大. AF step一般来说, ...

  7. JS案例 - 分页

    1.html文件 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  8. Lnmp环境安装禅道项目管理软件

    1.本地环境 CentOS Linux release 7.5.1804 (Core) PHP 7.1.0-dev (cli) mysql Ver 14.14 Distrib 5.7.22 nginx ...

  9. windows下端口占用解决办法,解决命令

    1.netstat -aon|findstr "8183"  可以看到listener 对应的端口id 2.taskkill /pid {查询出来对应的id值}  /f

  10. 利用 Docker 搭建 IPFS 私有网络

    利用 Docker 搭建 IPFS 私有网络 本文原始地址:https://sitoi.cn/posts/40630.html 下载项目 项目地址:https://github.com/Sitoi/p ...