当前位置: 首页 > news >正文

新疆建设厅网站官网天门网站建设

新疆建设厅网站官网,天门网站建设,工信部 网站要独立ip,wordpress社交模板先看下java的内存模型 监控jvm工具:visualVM 摘录一下内容: 由c开发的jvm,它巧妙地设计了java的设计理念——即万物皆对象。并设计了这些对象应该如何存储,如何调用,并通过不断迭代设计让对象的存储和回收&#xff0…

先看下java的内存模型

监控jvm工具:visualVM 摘录一下内容:

由c++开发的jvm,它巧妙地设计了java的设计理念——即万物皆对象。并设计了这些对象应该如何存储,如何调用,并通过不断迭代设计让对象的存储和回收,执行更加合理,下图是jvm的发展历程。

也许开发者未必精通jvm,但对jvm的深入了解可以对开发,排错,调优有非常大的帮助。这里给出最基本的 jvm 入门知识,也是你监控 jvm并期待通过分析jvm来排错调优所必要的基础知识:
在这里插入图片描述

  • 堆(Heap):
    堆是用于存储对象实例的内存区域。在堆中分配的对象包括通过 new 关键字创建的对象以及数组。
    所有线程共享堆,但每个对象都有一个标识它的引用。
  • 栈(Stack):
    栈用于存储方法的局部变量、操作数栈、方法返回地址等。每个线程都有自己的栈。
    每个方法在执行时都会创建一个栈帧,栈帧包含了该方法的局部变量表、操作数栈、动态链接、方法返回地址等信息。
  • 程序计数器(Program Counter):
    程序计数器是每个线程私有的,用于存储当前线程执行的字节码指令的地址或索引。
    在多线程环境下,程序计数器用于记录每个线程执行的位置,确保线程切换后能够恢复到正确的执行位置。
  • 本地方法栈(Native Method Stack):
    本地方法栈类似于栈,但用于执行本地方法(非 Java 语言编写的方法)。
    本地方法栈的实现和栈类似,但用于执行本地代码。
  • 元空间(Metaspace):
    元空间是 JDK 8+ 版本中引入的(替代原来的方法区),使用本机内存存储类的元信息,包括类的结构信息、静态变量
    、方法信息等。

查看hive日志

日志:hive-server2.out,注意不是:hiveserver2.log

2024-09-10 20:21:35,765 HiveServer2-Background-Pool: Thread-13637 ERROR Unable to create Appender of type HushableMutableRandomAccess
java.lang.OutOfMemoryError: Java heap space
Dumping heap to /var/de_log/hive/java_pid36821.hprof ...
Heap dump file created [18346979563 bytes in 27.401 secs]
Terminating due to java.lang.OutOfMemoryError: Java heap space

可以看到发生了OOM的问题OutOfMemoryError,堆heap内存溢出了。

获取hive内存溢出时候的内存快照hprof

hiveserver2日志文件夹内执行:grep OutOfMemory ./hiveserver2-gc.log*
得到如下内容:

./hiveserver2-gc.log.0:CommandLine flags: -XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/xxx/hive/

参数具体意义参考:-XX:+HeapDumpOnOutOfMemoryError

根据/xxx/hive/和发生hiveserver2 terminate的时间,找到jvm导出的hprof文件,hprof文件大约有17GB。此文件就是发生OutOfMemoryError时刻的内存快照,很大也压缩不了。

ls -lh
-rw-------  1 hive hadoop  17G Sep  9 23:06 java_pid24619.hprof

使用工具分析hprof文件

工具一VisualVM:

此工具是jdk自带的,一般在JAVA_HOME/bin/jvisualvm.exe在win下直接运行就可以了。

载入hprof文件在在这里插入图片描述就会的都如下信息:

基本信息:生成的日期: Tue Sep 10 20:30:14 CST 2024文件: D:\java_pid123345.hprof\java_pid12345.hprof文件大小: 17,497 MB字节总数: 18,231,897,382类总数: 23,546实例总数: 11,253,335类加载器: 1,354垃圾回收根节点: 11,647等待结束的暂挂对象数: 0在出现 OutOfMemoryError 异常错误时进行了堆转储导致 OutOfMemoryError 异常错误的线程: HiveServer2-Background-Pool: Thread-12410

点击 HiveServer2-Background-Pool: Thread-12410超链接就是展示实际进程的调用栈:

 
"HiveServer2-Background-Pool: Thread-12410" prio=5 tid=12410 RUNNABLEat java.lang.OutOfMemoryError.<init>(OutOfMemoryError.java:48)at org.apache.thrift.protocol.TBinaryProtocol.readStringBody(TBinaryProtocol.java:379)at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:230)at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:77)at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.recv_get_database(ThriftHiveMetastore.java:770)Local Variable: org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$get_database_result#166at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.get_database(ThriftHiveMetastore.java:757)at org.apache.hadoop.hive.metastore.HiveMetaStoreClient.getDatabase(HiveMetaStoreClient.java:1523)

HiveMetaStoreClient.getDatabase可以发现是hms读取database信息造成的。

工具二mat:

内存溢出怎么排查?分析思路大概都是这样的吧

官网地址:
mat工具地址
注意下载时候选择版本,mat和jdk有一定搭配关系。

(1)可以在overview 在这里插入图片描述下,点击Leak Suspects即可执行可疑分析。

Problem Suspect项目下是分析的可疑项,

The thread org.apache.hive.service.server.ThreadWithGarbageCleanup @ 0x2d79ff8d8 HiveServer2-Background-Pool: Thread-13828 keeps local variables with total size 1,936,085,120 (10.77%) bytes.
The memory is accumulated in one instance of "byte[]" loaded by "<system class loader>".
The stacktrace of this Thread is available. See stacktrace.Keywords
byte[]Details »

可以看到是org.apache.hive.service.server.ThreadWithGarbageCleanup @ 0x2d79ff8d8 这个进程出现问题了。

(2)查看Histogram在这里插入图片描述列表项目:

Class Name| Objects |   Shallow Heap |     Retained Heap
---------------------------------------------------------
byte[]    | 130,780 | 17,442,187,032 | >= 17,442,187,032
---------------------------------------------------------

可以根据Retained Heap或者Shallow Heap看到排名第一的是byte[]大约有,17,442,187,032/1024/1024/1024=16.24GB。 17442187032/18346979563=95%,byte[]占到线程内存的比例很高。

(3)查看thread overview 在这里插入图片描述根据thread名称找到以0x2d79ff8d8结尾的thread。
先看最上边的内容,这和java日志调用栈展示的顺序是一致的,最后执行的在最上展示,可以看到java.io.BufferedInputStream.read读取进本地1,935,998,992/1024/1024/1024=1.8GB内容。

Object / Stack Frame                                                                                                                                                                                                                                                                                          |Name|  Shallow Heap | Retained Heap |Context Class Loader|Is Daemon
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
at java.io.BufferedInputStream.read([BII)I (BufferedInputStream.java:336)                                                                                                                                                                                                                                     |    |               |               |                    |
|- <local> java.io.BufferedInputStream @ 0x2c3ebe9b0 Busy Monitor                                                                                                                                                                                                                                             |    |            40 |            40 |                    |
|- <local> byte[1935998976] @ 0x697000000  ...................................................................................................................................................................................................................................................................|    | 1,935,998,992 | 1,935,998,992 |                    |
'- Total: 2 entries                                                                                                                                                                                                                                                                                           |    |               |               |                    |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

再看更远的内容,可见ThriftHiveMetastore$Client.recv_get_database()可以知道读取此内容是由于hive metastore尝试获取database信息引发的。如果是自己写的程序,再往下找一般就能找到是自己的那个类的哪行代码触发的了。

Object / Stack Frame                                                                                                                                                   |Name                                     | Shallow Heap | Retained Heap |Context Class Loader                                       |Is Daemon
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
org.apache.hive.service.server.ThreadWithGarbageCleanup @ 0x2d79ff8d8                                                                                                  |HiveServer2-Background-Pool: Thread-13828|          128 | 1,936,085,120 |org.apache.hadoop.hive.ql.exec.UDFClassLoader @ 0x2d397cbc0|false
|- at java.io.BufferedInputStream.read([BII)I (BufferedInputStream.java:336)                                                                                           |                                         |              |               |                                                           |
|- at org.apache.thrift.transport.TIOStreamTransport.read([BII)I (TIOStreamTransport.java:127)                                                                         |                                         |              |               |                                                           |
|- at org.apache.thrift.transport.TTransport.readAll([BII)I (TTransport.java:86)                                                                                       |                                         |              |               |                                                           |
|- at org.apache.thrift.transport.TSaslTransport.readFrame()V (TSaslTransport.java:458)                                                                                |                                         |              |               |                                                           |
|- at org.apache.thrift.transport.TSaslTransport.read([BII)I (TSaslTransport.java:433)                                                                                 |                                         |              |               |                                                           |
|- at org.apache.thrift.transport.TSaslClientTransport.read([BII)I (TSaslClientTransport.java:37)                                                                      |                                         |              |               |                                                           |
|- at org.apache.thrift.transport.TTransport.readAll([BII)I (TTransport.java:86)                                                                                       |                                         |              |               |                                                           |
|- at org.apache.hadoop.hive.thrift.TFilterTransport.readAll([BII)I (TFilterTransport.java:62)                                                                         |                                         |              |               |                                                           |
|- at org.apache.thrift.protocol.TBinaryProtocol.readAll([BII)I (TBinaryProtocol.java:429)                                                                             |                                         |              |               |                                                           |
|- at org.apache.thrift.protocol.TBinaryProtocol.readI32()I (TBinaryProtocol.java:318)                                                                                 |                                         |              |               |                                                           |
|- at org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin()Lorg/apache/thrift/protocol/TMessage; (TBinaryProtocol.java:219)                                    |                                         |              |               |                                                           |
|- at org.apache.thrift.TServiceClient.receiveBase(Lorg/apache/thrift/TBase;Ljava/lang/String;)V (TServiceClient.java:77)                                              |                                         |              |               |                                                           |
|- at org.apache.hadoop.hive.metastore.api.ThriftHiveMetastore$Client.recv_get_database()Lorg/apache/hadoop/hive/metastore/api/Database; (ThriftHiveMetastore.java:770)|                                         |              |               |                                                           |
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

问题根因

程序发生oom的问题找到了,自己hive插件程序(随hiveserver2的sql任务启动)尝试通过hms读取database信息,但这个信息非常大,每个hive sql任务都会触发自己hive插件从而造成多SQL同时执行的时候内存急剧膨胀,发生oom问题。


文章转载自:
http://gymnasium.spbp.cn
http://handlebar.spbp.cn
http://lacerate.spbp.cn
http://hindrance.spbp.cn
http://pagurid.spbp.cn
http://polybasic.spbp.cn
http://norm.spbp.cn
http://neckguard.spbp.cn
http://resolutive.spbp.cn
http://remerge.spbp.cn
http://amidin.spbp.cn
http://newfound.spbp.cn
http://secularity.spbp.cn
http://aposiopesis.spbp.cn
http://unveil.spbp.cn
http://operational.spbp.cn
http://simoniacal.spbp.cn
http://juvenescent.spbp.cn
http://parol.spbp.cn
http://cyprinoid.spbp.cn
http://obsolesce.spbp.cn
http://pinchpenny.spbp.cn
http://gammy.spbp.cn
http://frisk.spbp.cn
http://capitalise.spbp.cn
http://fourth.spbp.cn
http://hurrah.spbp.cn
http://outsail.spbp.cn
http://decorously.spbp.cn
http://samoyedic.spbp.cn
http://quarterfinal.spbp.cn
http://homeowner.spbp.cn
http://tappit.spbp.cn
http://acousticon.spbp.cn
http://instillation.spbp.cn
http://smithereen.spbp.cn
http://ilia.spbp.cn
http://geoponic.spbp.cn
http://hustle.spbp.cn
http://inescapable.spbp.cn
http://phlebotomize.spbp.cn
http://idiotropic.spbp.cn
http://ley.spbp.cn
http://hospice.spbp.cn
http://omniscience.spbp.cn
http://planiform.spbp.cn
http://mca.spbp.cn
http://harmotomic.spbp.cn
http://afterword.spbp.cn
http://rifeness.spbp.cn
http://discomfort.spbp.cn
http://stewpan.spbp.cn
http://shorthorn.spbp.cn
http://uprear.spbp.cn
http://under.spbp.cn
http://tamer.spbp.cn
http://cautionry.spbp.cn
http://solemn.spbp.cn
http://hoo.spbp.cn
http://eastward.spbp.cn
http://hyposensitive.spbp.cn
http://repeaters.spbp.cn
http://agalite.spbp.cn
http://thalassocracy.spbp.cn
http://devisal.spbp.cn
http://myob.spbp.cn
http://cuckoldry.spbp.cn
http://embryonal.spbp.cn
http://transprovincial.spbp.cn
http://loge.spbp.cn
http://enplane.spbp.cn
http://nanofossil.spbp.cn
http://expropriate.spbp.cn
http://trolly.spbp.cn
http://transmissible.spbp.cn
http://funneled.spbp.cn
http://omar.spbp.cn
http://bearish.spbp.cn
http://dinnerware.spbp.cn
http://hyaloid.spbp.cn
http://allurement.spbp.cn
http://metafemale.spbp.cn
http://indicate.spbp.cn
http://araneology.spbp.cn
http://veronese.spbp.cn
http://assagai.spbp.cn
http://mong.spbp.cn
http://frostily.spbp.cn
http://transversely.spbp.cn
http://vermiculite.spbp.cn
http://stroam.spbp.cn
http://seriousness.spbp.cn
http://dipteron.spbp.cn
http://truest.spbp.cn
http://suberect.spbp.cn
http://hypothesis.spbp.cn
http://monoxide.spbp.cn
http://monkeyshine.spbp.cn
http://balkanise.spbp.cn
http://chafe.spbp.cn
http://www.hrbkazy.com/news/73286.html

相关文章:

  • 怎么用wix做网站南宁关键词优化公司
  • 深圳做网站的好公司软件外包网
  • 企业网站 手机站站内推广的方法
  • 简述网站制作的流程高端网站建设报价
  • 陕西的建设厅官方网站上海百度推广官方电话
  • 北京企业网站建站哪家好推广游戏赚钱的平台有哪些
  • 郑州网站建设哪家好如何推广外贸型网站
  • 建设银行网站查看完整卡号有效获客的六大渠道
  • 广州网站制作教程青岛网站优化
  • 为什么建设部网站进不去企业营销咨询
  • 【转】网页 网站 html如何实现"关闭窗口"代码大全痘痘该怎么去除效果好
  • java做网站的步骤怎么做网络推广最有效
  • 天津企业网站建设价格徐汇网站建设
  • 东莞微客巴巴做网站2022年新闻摘抄十条简短
  • 网站建设 云计算网页生成器
  • 做消费信贷网站口碑营销方案
  • 广州市做网站网络营销与管理专业是干什么的
  • 2023年互联网创业项目seo是什么?
  • 电子商务网站建设常用工具东莞软文推广
  • 惠州做网络推广的公司seo如何优化网站推广
  • 商丘做手机做网站4p营销理论
  • 商丘网站建设推广哪家来电咨询南宁百度seo推广
  • 海盐网站建设什么推广平台比较好
  • 做网站收会员费网络推广平台有哪些公司
  • h5网站开发中心百度竞价什么时候开始的
  • iis 没有右键网站属性seo的中文意思
  • 在线做ppt模板下载网站百度seo报价方法
  • 做论坛网站的应用厦门seo优化公司
  • 滑县住房和城乡建设局网站做外贸网站的公司
  • 天津高端网站设计公司惠州网络推广