当前位置: 首页 > 编程日记 > 正文

线上java问题排查

0.jps

这个输出java进程pid

#jps


查看java的线程

#top -Hp 25448


如图25757这个线程比较耗时,看看他在做什么


注意需要折算出线程pid的16进制值,然后jstack。

可以打印更多信息

#jstack pid | grep -A 20 649d


参考:JVM调优之jstack找出最耗cpu的线程并定位代码

top+jstack分析cpu过高原因


1.jstack

#jstack -l pid > jstack.log

使用jstack命令输出这一时刻的线程栈

jstack线程分析

jstack日志深入理解


2.jmap

#jmap -dump:format=b,file=heapDump 6900

#jmap -dump:live,format=b,file=dump.bin  6900

-dump:[live,]format=b,file=<filename> 使用hprof二进制形式,输出jvm的heap内容到文件=. 
live子选项是可选的,假如指定live选项,那么只输出活的对象到文件. 

Java命令学习系列(3):Jmap

jmap查看堆内存大小

#jmap -heap  pid

注意:jmap使用的时候jvm是处在停顿状态的,只能在服务不可用的时候为了解决问题来使用,否则会造成服务中断。


使用jmap -histo[:live] pid查看堆内存中的对象数目、大小统计直方图,如果带上live则只统计活对象,如下:
# jmap -histo:live pid | more



需要使用MAT工具分析jmap dump的内存

使用jmap和MAT分析JVM堆内存


3.jstat

jstat -gcutil pid

250毫秒一次采样4次


可以看出:
堆内存 = 年轻代 + 年老代 + 永久代
年轻代 = Eden区 + 两个Survivor区(From和To)

现在来解释各列含义:
S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)
EC、EU:Eden区容量和使用量
OC、OU:年老代容量和使用量
PC、PU:永久代容量和使用量
YGC、YGT:年轻代GC次数和GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时
E、hprof(Heap/CPU Profiling Tool)

4.gcore

#gdb -q --pid=1990

(gdb) generate-core-file
(gdb) detach
(gdb) quit
jmap -dump:format=b,file=heap.hprof /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java core.1990

需要具体jdk对应的bin/java

参考:

gcore 获取程序core dump file 但程序不用退出,gdb 分析core

java程序性能分析之thread dump和heap dump


5.堆外内存泄露分析

top出来java占用内存极大而jmap出来的很小,说明有堆外内存泄露。

参考Java堆外内存泄露分析


综合使用参考: JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解

JVM性能调优监控工具专题一:JVM自带性能调优工具(jps,jstack,jmap,jhat,jstat,hprof)

JVM性能调优监控工具专题二:VisualVM基本篇之监控JVM内存,CPU,线程

相关文章:

GitHub标星10,000+,Apache项目ShardingSphere的开源之路

【编者按】几天前&#xff0c;当 GitHub 全球产品技术生态总经理 Michael Francisco 谈到中国开发者已经成为 GitHub 上最活跃的群体时&#xff0c;有开发者提出数量之后质量也要跟上。的确&#xff0c;过去十数年间&#xff0c;中国开源一直呈现企业热使用热社区冷开发冷的景象…

JAVA中LOCK

原文链接&#xff1a;http://www.cnblogs.com/dolphin0520/p/3923167.html 一.synchronized的缺陷 我们知道如果一个代码块被synchronized修饰了&#xff0c;当一个线程获取了对应的锁&#xff0c;并执行该代码块时&#xff0c;其他线程便只能一直等待&#xff0c;等待获取锁的…

【公开课预告】AutoML知多少

5月7日周四19:00&#xff0c;商汤泰坦公开课第010期&#xff0c;论文解读系列课程第二期即将开播&#xff01;我们邀请到商汤科技的4位研究员&#xff0c;分享团队在AutoML方面的一系列研究工作&#xff0c;其中包含CVPR 2020、ICLR 2020等多篇最新论文成果&#xff0c;想要了解…

Linux kernel futex.c的bug导致JVM不可用

JVM死锁导致线程不可用&#xff0c;然后会瞬间起N个线程&#xff0c;当然也是不可用的&#xff0c;因为需要的对象死锁&#xff0c;然后耗尽文件句柄导致外部TCP无法建议拒绝服务&#xff0c;jstack之后就会恢复。 解决办法&#xff1a;替换中间件类库 &#xff0c;比如httpcli…

ruby爬虫综述

http://ihower.tw/blog/archives/2941一个ruby爬虫的例子http://hi.baidu.com/anspider/blog/item/9da210425a0e4e179213c6fb.html

Exchange 2016集成ADRMS系列-12:域内outlook 2010客户端测试

接下来&#xff0c;我们来到域内安装了office 2010的机器上进行测试。 首先我们在客户端上强制刷新组策略&#xff0c;把我们刚才设置的策略刷新下来。 然后我们可以运行gpresult /h result.html来看看策略是不是已经下来了。 策略下来之后&#xff0c;我们打开客户端上面的out…

在Linux下编写Daemon

在Linux下编写Daemon 转自&#xff1a;http://blog.163.com/prevBlogPerma.do?hostmanyhappy163&srl1644768312010718111142260&modeprev 在Linux&#xff08;以Redhat Linux Enterprise Edition 5.3为例&#xff09;下&#xff0c;有时需要编写Service。Service也是…

JVM虚拟机参数配置官方文档

JDK8 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/index.html JDK7 https://docs.oracle.com/javase/7/docs/technotes/tools/solaris/java.html 官方博客 https://blogs.or…

在Rust代码中编写Python是种怎样的体验?

作者 | Mara Bos&#xff0c;Rust资深工程师译者 | Arvin&#xff0c;编辑 | 屠敏来源 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;大约一年前&#xff0c;我发布了一个名为inline-python&#xff08;https://crates.io/crates/inline-python&#xff09;的Rust类库…

Docker配置指南系列(二):指令集(二)

pause: 停止一个容器的所有进程语法&#xff1a;ocker pause CONTAINER [CONTAINER...] port: 列出容器的端口映射&#xff0c;或者查看指定开放端口的NAT映射语法&#xff1a;docker port [--help] CONTAINER [PRIVATE_PORT[/PROTO]] ps: 列出容器语法&#xff1…

无需训练RNN或生成模型,我写了一个AI来讲故事

作者 | Andre Ye译者 | 弯月出品 | AI科技大本营&#xff08;ID&#xff1a;rgznai100&#xff09;这段日子里&#xff0c;我们都被隔离了&#xff0c;就特别想听故事。然而&#xff0c;我们并非对所有故事都感兴趣&#xff0c;有些人喜欢浪漫的故事&#xff0c;他们肯定不喜欢…

Java字节码instrument研究

MyAgent项目 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.…

怎样保持良好的心态

有一位朋友有一次气冲冲的跟我说&#xff1a;“气死我了&#xff01;我刚刚发现我一位员工出了错&#xff0c;令产品出现了质量的问题&#xff0c;我修理了他一顿。。。 我问&#xff1a;”你认为你的生产流程里面可能一点错误都没有吗&#xff1f;“ 他说&#xff1a;”应该不…

web编程速度大比拼(nodejs go python)(非专业对比)

C10K问题的解决&#xff0c;涌现出一大批新框架&#xff0c;或者新语言&#xff0c;那么问题来了:到底谁最快呢&#xff1f;非专业程序猿来个非专业对比。 比较程序&#xff1a;输出Hello World&#xff01; 测试程序&#xff1a;siege –c 100 –r 100 –b 例子包括&#xff1…

linux邮件服务

邮件服务要求:l 能够构建完整的邮件系统 能够正确设置DNS邮件服务器记录 l 能够配置sendmail服务器 设置客户端软件使用邮件服务器 准备工作&#xff1a; l 主机名&#xff1a;srv.benet.com /etc/sysconfig/network <永久的> l 域名 正向区域 bt.com完成NDS的…

MaskFlownet:基于可学习遮挡掩模的非对称特征匹配丨CVPR 2020

来源 | 微软研究院AI头条&#xff08;ID: MSRAsia&#xff09;编者按&#xff1a;在光流预测任务中&#xff0c;形变带来的歧义与无效信息会干扰特征匹配的结果。在这篇 CVPR 2020 Oral 论文中&#xff0c;微软亚洲研究院提出了一种可学习遮挡掩模的非对称特征匹配模块 &#x…

GDB调试--以汇编语言为例

#rpm -qa |grep gdb 下载&#xff1a; 安装 #tar -zxvf #./configure #make 使用GDB 以汇编语言调试为例 汇编语言实现CPUID指令 CPUID cpuid是Intel Pentinum以上级CPU内置的一个指令&#xff08;486级以下的CPU不支持&#xff09;&#xff0c;他用于识别某一类型…

汇编语言系统调用过程

以printf为例&#xff0c;详细解析一个简单的printf调用里头&#xff0c;系统究竟做了什么&#xff0c;各寄存器究竟如何变化。 如何在汇编调用glibc的函数&#xff1f;其实也很简单&#xff0c;根据c convention call的规则&#xff0c;参数反向压栈&#xff0c;call&#xf…

switch语句中在case块里声明变量会遇到提示“Expected expression before...的问题

switch语句中在case块里声明变量会遇到提示“Expected expression before..."的问题 例如在如下代码中 1case constant:2 int i 1;3 int j 2;4 self.sum i j;5 break;GCC在case语句之后的第一行中声明变量时遇到问题。 这时需要在case块两端添加花括号&am…

帮AI体检看病一条龙服务,阿里发布“AI安全诊断大师”

如同一些出生免疫力就有缺陷的人一样&#xff0c;AI也存在免疫力缺陷。基于从源头打造安全免疫力的新一代安全架构理念&#xff0c;最近&#xff0c;阿里安全研究发布了一项核心技术“AI安全诊断大师”&#xff0c;可对AI模型全面体检&#xff0c;“看诊开方”&#xff0c;让AI…

Spring学习总结(7)——applicationContext.xml 配置文详解

web.xml中classpath:和classpath*: 有什么区别? classpath&#xff1a;只会到你的class路径中查找找文件; classpath*&#xff1a;不仅包含class路径&#xff0c;还包括jar文件中(class路径)进行查找. 存放位置&#xff1a; 1&#xff1a;src下面 需要在web.xml中定义如下&…

GDB查看栈信息

栈&#xff1a;是程序存放数据内存区域之一&#xff0c;特点是LIFO&#xff08;后进先出&#xff09;。 PUSH&#xff1a;入栈 POP&#xff1a;出战 使用场景&#xff1a; 1.保存动态分配的自动变量使用栈 2.函数调用时&#xff0c;用栈传递函数参数&#xff0c;半寸返回地址…

数据库学习之路

今天迎来入冬的第二场雪&#xff0c;闲来无事就整理了下总结下工作以来所有数据库方面的书籍和资料&#xff0c;发现了不少&#xff0c;很多已经读过或者正在读的书籍&#xff0c;oracle真的很强大&#xff0c;直到现在发现才入门的水平&#xff0c;当然很多书读一遍是不行的&a…

为什么铺天盖地都是Python的广告?

最近&#xff0c;知乎关于Python有一个热议问题&#xff1a; 甚至在抖音上&#xff0c;笔者有一次还看到Python占领了热搜&#xff01;应该有很多不懂技术的吃瓜群众也被Python的热度炒懵了……但是&#xff0c;Python真的值得学吗&#xff1f;真的值得花这么多钱去学吗&#x…

python3正则表达式符号和用法

转载于:https://www.cnblogs.com/wumac/p/5441322.html

从寄存器看I386和x64位中函数调用中参数传递

x86_64基本使用寄存器存储函数参数&#xff0c;寄存器不够才入栈&#xff1b; 而i386将所有参数保存在栈上&#xff0c;通过gcc的扩展功能__attribute__((regparm()))即可实现部分参数的寄存器传递。 调试语法&#xff1a; --《深入理解计算机系统(原书第2版)》 代码 #incl…

转:去掉Flex4生成的SWF加载时的进度条

方法一&#xff1a; <?xml version"1.0" encoding"utf-8"?> <s:Application xmlns:fx"http://ns.adobe.com/mxml/2009" xmlns:s"library://ns.adobe.com/flex/spark" xmlns:mx"library://ns.adobe.com/f…

饿了么交易系统5年演化史

作者 | 挽晴来源 | 阿里巴巴中间件&#xff08;ID&#xff1a;Aliware_2018&#xff09;个人简介:2014年12月加入饿了么&#xff0c;当时参与后台系统的研发(WalisJavis>Walle)&#xff0c;主要面向客服和BD。2015年5月开始接触订单系统的研发&#xff0c;7月负责订单研发组…

Python迁移MySQL数据到MongoDB脚本

MongoDB是一个文档数据库&#xff0c;在存储小文件方面存在天然优势。随着业务求的变化&#xff0c;需要将线上MySQL数据库中的行记录&#xff0c;导入到MongoDB中文档记录。 一、场景&#xff1a;线上MySQL数据库某表迁移到MongoDB&#xff0c;字段无变化。 二、Python模块&am…

使用valgrind分析C程序调用线路图

Valgrind可以检测内存泄漏和内存违例&#xff0c;但是用Valgrind生成的日志信息结合kcachegrind就可以查看C程序的执行线路图&#xff0c;调用时间&#xff0c;是做性能优化和查看代码的非常好的工具。 1.下载安装 Valgrind 安装 到www.valgrind.org下载最新版valgrind # wg…