首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

如何对CDH集群中的Impala打印线程堆栈

上一篇文章《Impala查询卡顿分析案例》介绍了怎么对Impala进程打印线程堆栈,JVM部分直接用 jstack 比较直接,但 C++ 部分由于要使用 gdb 或 breakpad 工具,还需要编译源码...本文直接演示如何在 CDH 集群中打印 Impala 进程的线程堆栈,不再需要编译源码。当然第一次操作时还是需要下载一些工具,可以在集群中固定选一台机器来配置环境,以后再操作时就比较方便了。 1....0.0.0 Linux 4.4.0-24-generic #43-Ubuntu SMP Wed Jun 8 19:27:37 UTC 2016 x86_64 CPU...第一个线程 (Thread 0) 标记了 Crashed,但实际是在做 minidump 的线程,上面的 Crash reason 已经写了是 DUMP_REQUESTED。...解析的输出包含了很多寄存器的值,有点影响阅读,可以把它们去掉: grep -v = /tmp/resolved.txt | grep -v 'Found by' | less 这样能看到比较舒服的堆栈

3K11

java-堆栈打印

前言 在做调试bug的时候, 想测试知道这些流程是怎么调用的, 就需要打印堆栈信息 这里只是封装了一个工具函数, 看自己使用 代码如下 public static void printCallStack...} public static void printCallStack(int elementMax) { printCallStack(elementMax, true); } /** * 打印堆栈...* * @param elementMax 打印的调用链数, 默认0: 无限制 * @param currentThread 是否仅当前线程, 默认true */ public static...element.getLineNumber(), element.getMethodName()); System.out.println(msg); num++; } } 其实也只是使用线程来根据当前所在的...Thread获取当时的堆栈, 同时, 也可以获取所有线程堆栈信息, 调用的是 Thread.getAllStackTraces(); 返回一个Map, 遍历其就可以了 使用的话, 直接在想要打印的地方插入一行调用该方法

2.1K00

VC++ 崩溃处理以及打印调用堆栈

title: VC++ 崩溃处理以及打印调用堆栈 tags: [VC++, 结构化异常处理, 崩溃日志记录] date: 2018-08-28 20:59:54 categories: windows...Java、Python等等语言在崩溃的时候都会打印一条异常的堆栈信息并告诉用户那块出错了,根据这个信息程序员可以很容易找到对应的代码位置并进行处理,而C/C++则会弹出一个框告诉用户程序崩溃了,二者对比来看...,C++似乎对用户太不友好了,而且根据它的弹框很难找到对应的问题,那么有没有可能使c++像Java那样打印异常的堆栈呢?...打印函数调用堆栈 关于打印堆栈的内容,这里不再多说了,请参考本人之前写的博客 windows平台调用函数堆栈的追踪方法 这里的主要思路是使用StackWalker来根据当前的堆栈环境来获取对应的函数信息...在获取堆栈信息的时候首先判断是否为当前线程,如果不是那么为了结果准确,需要先停止目标线程,然后获取,否则直接使用宏来获取,对应的宏定义如下: #define GET_CURRENT_THREAD_CONTEXT

3.4K40

jstack 命令查看JAVA线程堆栈

JAVA堆栈信息 实际生产中,可能由于开发以及测试未能全面覆盖的代码质量、性能问题,而引致线程挂起甚至崩溃。可能就需要查看堆栈信息来排查问题了。...com.byron4j.currency.lock.ReantrentLockDemo -Dfile.encoding=UTF-8 我们看到当前计算机运行了3个java进程,进程id为6812的是我们的应用服务,我们需要查看其堆栈信息...jstack -l pid 我们使用 jstack -l 6812 查看我们的应用堆栈信息: C:\Users\Administrator>jstack -l 6812 2017-08-06 14:00...# 应用的堆栈信息 "main" #1 prio=5 os_prio=0 tid=0x000000000263f000 nid=0xc4 waiting on condition [0x00000000027af000...com.byron4j.currency.lock.ReantrentLockDemo.main(ReantrentLockDemo.java:19) Locked ownable synchronizers: - None 可以看到我们的应用线程当前处于等待睡眠状态

1.3K10

如何正确地打印异常堆栈信息

而已,没想到原来一直都使用错了,以至于有些错误信息没能在log文件中打印堆栈信息,最终难以定位bug,排查困难。...如何正确地打印异常的堆栈信息? 一般在catch到异常的时候,不要使用e.printStackTrace()来打印异常信息。...我们使用日志框架来打印信息,一般来说,日志框架的log级别从低到高是:debug, info, warn, error, fatal。 对于异常,一般使用log.error()来打印堆栈信息。...对于第二个log语句,只是打印出了异常的具体信息,既没有异常类名,也没有堆栈信息。 对于第三个log语句,打印出了异常的类名和具体信息,但是没有打印出来堆栈信息。...总结一下,就是我们应该使用第一种log语句的形式来将堆栈信息打印出来,方便日后定位bug,排除错误。 警告 本文最后更新于 November 11, 2018,文中内容可能已过时,请谨慎使用。

1.2K00

windows堆栈研究以及线程安全

由于hook时要线程安全,考虑每条线程堆栈放对应的数据,于是找了一下网上的说法是默认2M,实际情况却不是这样的。在win10下,使用gcc,vc++,delphi,3种编译器默认编译进行了测试。...真实大小是1A0000-A3000=FD000(1,036,288) 大约1M,这是堆栈满了重新分配后的大小,必须跨越栈底堆栈才会重新分配,我想这部分应该在内核,暂时还没研究。...必须多次跨越栈底,每次增加1000(4096),也就是4K,一直到A3000(注意这里是例子中的偏移,实际情况可能不一样,比如另一个表现为500000-403000=FD000)就可以停止了,之后你就可以使用1M的堆栈了...说一下栈顶,跨越栈顶没有问题,但是操作系统并不会更改TEB中的数据,所以这种做法无法增加堆栈大小。...再说一下线程安全,直接在堆栈中分配的局部变量当然是安全的,但是指针不安全,如果每条线程分配一个对象,这种面向对象也是安全的,全局变量是不安全的,而不同线程使用同一个对象也是不安全的。

43820

解决 Java 打印日志吞异常堆栈的问题

前几天有同学找我查一个空指针问题,Java 打印日志时,异常堆栈信息被吞了,导致定位不到出问题的地方。...分析 在之前的一篇文章里已经验证过这种写法是可以正常打印异常和堆栈信息的:AI 自动补全的这句日志能正常打印吗?...再三确认代码写法没问题,纳闷之下只好搜索了一下关键词「Java异常堆栈丢失」,发现了这篇文章:Java异常堆栈丢失的现象及解决方法,这里面提到的问题与我们遇到的一样,而且给出了 Oracle 官方文档里的相关说明...了解到这个信息后,翻了翻从服务上次发版以来的这条日志,果然最早的十几次打印是有异常堆栈的,后面就没有了。...解决方案 回溯历史日志,找到正常打印堆栈信息,定位和解决问题; 也可以考虑在 JVM 参数里加上 -XX:-OmitStackTraceInFastThrow 参数,禁用优化; 本地复现 在本地写一个简单的程序复现一下

19220

通过Java 线程堆栈进行性能瓶颈分析

效率地下的 SQL 语句或者不恰当的数据库设计 不恰当的 GC 参数设置导致的性能低下 线程数量不足 内存泄漏导致的频繁 GC 2.2 性能瓶颈分析的手段和工具 上面提到的这些原因形成的性能瓶颈,都可以通过线程堆栈分析...由于 JProfile 等性能剖析工具依附在 JVM 上带来的开销,使系统根本就无法达到该瓶颈出现时需要的性能,因此在这种场景下线程堆栈分析才是一个真正有效的方法 鉴于性能瓶颈的以上特点,进行性能模拟的时候...2.2.2 如何通过线程堆栈识别性能瓶颈 通过线程堆栈,可以很容易的识别多线程场合下高负载的时候才会出现的性能瓶颈。一旦一个系统出现性能瓶颈,最重要的就是识别性能瓶颈,然后根据识别的性能瓶颈进行修改。...一般多线程系统,先按照线程的功能进行归类(组),把执行相同功能代码的线程作为一组进行分析。当使用堆栈进行分析的时候,以这一组线程进行统计学分析。...一般一个系统一旦出现性能瓶颈,从堆栈上分析,有如下三种最为典型的堆栈特征: 绝大多数线程堆栈都表现为在同一个调用上下文,且只剩下非常少的空闲线程

1.1K110

通过 Java 线程堆栈进行性能瓶颈分析

效率地下的 SQL 语句或者不恰当的数据库设计 不恰当的 GC 参数设置导致的性能低下 线程数量不足 内存泄漏导致的频繁 GC 2.2 性能瓶颈分析的手段和工具 上面提到的这些原因形成的性能瓶颈,都可以通过线程堆栈分析...由于 JProfile 等性能剖析工具依附在 JVM 上带来的开销,使系统根本就无法达到该瓶颈出现时需要的性能,因此在这种场景下线程堆栈分析才是一个真正有效的方法 鉴于性能瓶颈的以上特点,进行性能模拟的时候...image 2.2.2 如何通过线程堆栈识别性能瓶颈 通过线程堆栈,可以很容易的识别多线程场合下高负载的时候才会出现的性能瓶颈。...一般多线程系统,先按照线程的功能进行归类(组),把执行相同功能代码的线程作为一组进行分析。当使用堆栈进行分析的时候,以这一组线程进行统计学分析。...绝大多数线程堆栈都表现为在同一个调用上下文,且只剩下非常少的空闲线程

1.2K60
领券