12.4.2.4  jstack

jstack 是一个最重要(除了看Log)的java工具,可以看到具体的Java进程的在做什么。可以先用Jps看到进程的Id,然后就可以用jstack。他会按线程的创建顺序显示线程的列表,还有这个线程在做什么。下面是例子:

这个主线程是一个RegionServer正在等master返回什么信息。

"regionserver60020" prio=10 tid=0x0000000040ab4000 nid=0x45cf waiting on condition [0x00007f16b6a96000..0x00007f16b6a96a70]

java.lang.Thread.State: TIMED_WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00007f16cd5c2f30> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)

at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)

at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:1963)

at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:395)

at org.apache.hadoop.hbase.regionserver.HRegionServer.run(HRegionServer.java:647)

at java.lang.Thread.run(Thread.java:619)

The MemStore flusher thread that is currently flushing to a file:

"regionserver60020.cacheFlusher" daemon prio=10 tid=0x0000000040f4e000 nid=0x45eb in Object.wait() [0x00007f16b5b86000..0x00007f16b5b87af0]

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

at java.lang.Object.wait(Object.java:485)

at org.apache.hadoop.ipc.Client.call(Client.java:803)

- locked <0x00007f16cb14b3a8> (a org.apache.hadoop.ipc.Client$Call)

at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:221)

at $Proxy1.complete(Unknown Source)

at sun.reflect.GeneratedMethodAccessor38.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)

at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)

at $Proxy1.complete(Unknown Source)

at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.closeInternal(DFSClient.java:3390)

- locked <0x00007f16cb14b470> (a org.apache.hadoop.hdfs.DFSClient$DFSOutputStream)

at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.close(DFSClient.java:3304)

at org.apache.hadoop.fs.FSDataOutputStream$PositionCache.close(FSDataOutputStream.java:61)

at org.apache.hadoop.fs.FSDataOutputStream.close(FSDataOutputStream.java:86)

at org.apache.hadoop.hbase.io.hfile.HFile$Writer.close(HFile.java:650)

at org.apache.hadoop.hbase.regionserver.StoreFile$Writer.close(StoreFile.java:853)

at org.apache.hadoop.hbase.regionserver.Store.internalFlushCache(Store.java:467)

- locked <0x00007f16d00e6f08> (a java.lang.Object)

at org.apache.hadoop.hbase.regionserver.Store.flushCache(Store.java:427)

at org.apache.hadoop.hbase.regionserver.Store.access$100(Store.java:80)

at org.apache.hadoop.hbase.regionserver.Store$StoreFlusherImpl.flushCache(Store.java:1359)

at org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:907)

at org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:834)

at org.apache.hadoop.hbase.regionserver.HRegion.flushcache(HRegion.java:786)

at org.apache.hadoop.hbase.regionserver.MemStoreFlusher.flushRegion(MemStoreFlusher.java:250)

at org.apache.hadoop.hbase.regionserver.MemStoreFlusher.flushRegion(MemStoreFlusher.java:224)

at org.apache.hadoop.hbase.regionserver.MemStoreFlusher.run(MemStoreFlusher.java:146)

一个处理线程是在等一些东西(例如put, delete, scan...):

"IPC Server handler 16 on 60020" daemon prio=10 tid=0x00007f16b011d800 nid=0x4a5e waiting on condition [0x00007f16afefd000..0x00007f16afefd9f0]

java.lang.Thread.State: WAITING (parking)

at sun.misc.Unsafe.park(Native Method)

- parking to wait for <0x00007f16cd3f8dd8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)

at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)

at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1925)

at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:358)

at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1013)

有一个线程正在忙,在递增一个counter(这个阶段是正在创建一个scanner来读最新的值):

"IPC Server handler 66 on 60020" daemon prio=10 tid=0x00007f16b006e800 nid=0x4a90 runnable [0x00007f16acb77000..0x00007f16acb77cf0]

java.lang.Thread.State: RUNNABLE

at org.apache.hadoop.hbase.regionserver.KeyValueHeap.(KeyValueHeap.java:56)

at org.apache.hadoop.hbase.regionserver.StoreScanner.(StoreScanner.java:79)

at org.apache.hadoop.hbase.regionserver.Store.getScanner(Store.java:1202)

at org.apache.hadoop.hbase.regionserver.HRegion$RegionScanner.(HRegion.java:2209)

at org.apache.hadoop.hbase.regionserver.HRegion.instantiateInternalScanner(HRegion.java:1063)

at org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:1055)

at org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:1039)

at org.apache.hadoop.hbase.regionserver.HRegion.getLastIncrement(HRegion.java:2875)

at org.apache.hadoop.hbase.regionserver.HRegion.incrementColumnValue(HRegion.java:2978)

at org.apache.hadoop.hbase.regionserver.HRegionServer.incrementColumnValue(HRegionServer.java:2433)

at sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.apache.hadoop.hbase.ipc.HBaseRPC$Server.call(HBaseRPC.java:560)

at org.apache.hadoop.hbase.ipc.HBaseServer$Handler.run(HBaseServer.java:1027)

还有一个线程在从HDFS获取数据。

"IPC Client (47) connection to sv4borg9/10.4.24.40:9000 from hadoop" daemon prio=10 tid=0x00007f16a02d0000 nid=0x4fa3 runnable [0x00007f16b517d000..0x00007f16b517dbf0]

java.lang.Thread.State: RUNNABLE

at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)

at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:215)

at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:65)

at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)

- locked <0x00007f17d5b68c00> (a sun.nio.ch.Util$1)

- locked <0x00007f17d5b68be8> (a java.util.Collections$UnmodifiableSet)

- locked <0x00007f1877959b50> (a sun.nio.ch.EPollSelectorImpl)

at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)

at org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:332)

at org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157)

at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:155)

at org.apache.hadoop.net.SocketInputStream.read(SocketInputStream.java:128)

at java.io.FilterInputStream.read(FilterInputStream.java:116)

at org.apache.hadoop.ipc.Client$Connection$PingInputStream.read(Client.java:304)

at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)

at java.io.BufferedInputStream.read(BufferedInputStream.java:237)

- locked <0x00007f1808539178> (a java.io.BufferedInputStream)

at java.io.DataInputStream.readInt(DataInputStream.java:370)

at org.apache.hadoop.ipc.Client$Connection.receiveResponse(Client.java:569)

at org.apache.hadoop.ipc.Client$Connection.run(Client.java:477)

这里是一个RegionServer死了,master正在试着恢复。

"LeaseChecker" daemon prio=10 tid=0x00000000407ef800 nid=0x76cd waiting on condition [0x00007f6d0eae2000..0x00007f6d0eae2a70]

--

java.lang.Thread.State: WAITING (on object monitor)

at java.lang.Object.wait(Native Method)

at java.lang.Object.wait(Object.java:485)

at org.apache.hadoop.ipc.Client.call(Client.java:726)

- locked <0x00007f6d1cd28f80> (a org.apache.hadoop.ipc.Client$Call)

at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220)

at $Proxy1.recoverBlock(Unknown Source)

at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.processDatanodeError(DFSClient.java:2636)

at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.(DFSClient.java:2832)

at org.apache.hadoop.hdfs.DFSClient.append(DFSClient.java:529)

at org.apache.hadoop.hdfs.DistributedFileSystem.append(DistributedFileSystem.java:186)

at org.apache.hadoop.fs.FileSystem.append(FileSystem.java:530)

at org.apache.hadoop.hbase.util.FSUtils.recoverFileLease(FSUtils.java:619)

at org.apache.hadoop.hbase.regionserver.wal.HLog.splitLog(HLog.java:1322)

at org.apache.hadoop.hbase.regionserver.wal.HLog.splitLog(HLog.java:1210)

at org.apache.hadoop.hbase.master.HMaster.splitLogAfterStartup(HMaster.java:648)

at org.apache.hadoop.hbase.master.HMaster.joinCluster(HMaster.java:572)

at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:503)

单元主服务器解决性能瓶颈的方法,HBase相关推荐

  1. lol为什么网络连接到服务器未响应,lol登陆服务器未响应是怎么回事 解决lol登陆服务器未响应有方法...

    最近有很多lol玩家遇到了"登陆服务器未响应,您可能遇到一个网络问题,请检查您的网络"的问题,那么这是什么造成的呢,又该如何解决呢?下面小编给大家分享解决"lol登陆服务 ...

  2. Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突)

    Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突) 参考文章: (1)Intellij+maven:jar包冲突的解决方法(Hbase和Guava的冲突) (2)ht ...

  3. Eclipse无法编译,提示错误“找不到或者无法加载主类”解决方法

    Eclipse无法编译,提示错误"找不到或者无法加载主类"解决方法 参考文章: (1)Eclipse无法编译,提示错误"找不到或者无法加载主类"解决方法 (2) ...

  4. 扩展资源服务器解决oauth2 性能瓶颈

    用户携带token 请求资源服务器 资源服务器拦截器 携带token 去认证服务器 调用tokenstore 对token 合法性校验 资源服务器拿到token,默认只会含有用户名信息 通过用户名调用 ...

  5. valorant服务器维护啥情况,valorant连不上服务器怎么办 valorant连不上服务器解决方法介绍...

    valorant连不上服务器怎么办?2020年6月12日Valorant在港服开启了公测.不少的玩家反映游戏玩到一半出现连线错误卡退的问题,下面就跟随小编一起来看看解决方法吧. valorant连不上 ...

  6. 连接数据库是显示无法连接到服务器,如何解决出现无法与数据库服务器建立连接的方法...

    <如何解决出现无法与数据库服务器建立连接的方法>由会员分享,可在线阅读,更多相关<如何解决出现无法与数据库服务器建立连接的方法(6页珍藏版)>请在人人文库网上搜索. 1.如何解 ...

  7. 【Spring MVC】 错误: 找不到或无法加载主类 解决方法

    [Spring MVC] 错误: 找不到或无法加载主类 解决方法 最近在学习Spring,在学习SpringMVC过程中,将web.xml.Dispatcher-servlet.xml.applica ...

  8. Java 提示“找不到或无法加载主类” 解决方法

    Java 提示"找不到或无法加载主类" 解决方法 参考文章: (1)Java 提示"找不到或无法加载主类" 解决方法 (2)https://www.cnblog ...

  9. 本地主机作服务器解决AJAX跨域请求访问数据的方法

    本地主机作服务器解决AJAX跨域请求访问数据的方法 参考文章: (1)本地主机作服务器解决AJAX跨域请求访问数据的方法 (2)https://www.cnblogs.com/QiScript/p/5 ...

最新文章

  1. 国内首个深度学习工程师认证标准发布
  2. linux 关机 司机,Linux 关机
  3. pythonpandas用sql查询数据表_pandas从数据库读取数据
  4. js 中对象--对象结构(原型链基础解析)
  5. ibatis mysql 配置文件详解_MyBatis Generator 配置文件详解
  6. Binder源码分析之驱动层(原)
  7. 第二轮冲刺-Runner站立会议03
  8. 关于相机标定的问题答复网友
  9. Java 9中的5个功能将改变您开发软件的方式(还有2个不会)
  10. shiro学习(15):使用注解实现权限认证和后台管理
  11. uint8_t / uint16_t / uint32_t /uint64_t 的简单介绍
  12. 1688: [Usaco2005 Open]Disease Manangement 疾病管理( 枚举 )
  13. 解码器输出PSNR为0表示什么
  14. 玉龙雪山还会存在多久
  15. 2021ccpc广州站总结
  16. ST板块大幅下跌 不少ST股逆势上涨
  17. 波动方程,达朗贝尔解和亥姆霍兹方程
  18. 基于STM32F4的智能门锁系统
  19. MCMC蒙特卡洛马尔可夫过程
  20. React-Native + Mobx项目实战--探花交友APP--项目搭建

热门文章

  1. SCAU 数据结构 1 单链表分解
  2. 函数式编程-Stream流(来源三更草堂)
  3. 乘积累加运算(Multiply Accumulate, MAC)
  4. 使用LVM动态管理4T以上硬盘
  5. Web前端面试指导(四十四):什么是响应式开发?
  6. 亚马逊erp系统详细介绍,新手第一步
  7. 如何将MP4视频转换为MP3音频
  8. Threejs系列--22游戏开发--沙漠赛车游戏【布置游戏开始场景】
  9. java poi分批次导入Excel
  10. android手机能用ios吗,安卓手机真的可以刷苹果iOS系统吗?