0 0

java线程僵死,帮忙看看 -jstack日志5

多线程跑任务,任务为图片画table标签,就是把table标签转为图片
跑一段时间后会僵死所有线程,原因未知,附件为完整版日志。请帮忙看看



"taskExecutor-1" prio=10 tid=0x00007fe7d809c000 nid=0x447b in Object.wait() [0x00007fe88c5d3000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.awt.MediaTracker.waitForID(MediaTracker.java:651)
- locked <0x00000007822f81a0> (a java.awt.MediaTracker)
at javax.swing.ImageIcon.loadImage(ImageIcon.java:278)
- locked <0x00000007822f81a0> (a java.awt.MediaTracker)
at javax.swing.ImageIcon.setImage(ImageIcon.java:344)
at javax.swing.text.html.ImageView.loadImage(ImageView.java:679)
at javax.swing.text.html.ImageView.refreshImage(ImageView.java:648)
at javax.swing.text.html.ImageView.sync(ImageView.java:620)
at javax.swing.text.html.ImageView.getPreferredSpan(ImageView.java:418)
at javax.swing.text.FlowView$LogicalView.getPreferredSpan(FlowView.java:715)
at javax.swing.text.FlowView.calculateMinorAxisRequirements(FlowView.java:216)
at javax.swing.text.html.ParagraphView.calculateMinorAxisRequirements(ParagraphView.java:128)
at javax.swing.text.BoxView.checkRequests(BoxView.java:918)
at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:551)
at javax.swing.text.html.ParagraphView.getMinimumSpan(ParagraphView.java:261)
at javax.swing.text.BoxView.calculateMinorAxisRequirements(BoxView.java:886)
at javax.swing.text.html.BlockView.calculateMinorAxisRequirements(BlockView.java:129)
at javax.swing.text.html.TableView$CellView.calculateMinorAxisRequirements(TableView.java:1769)
at javax.swing.text.BoxView.checkRequests(BoxView.java:918)
at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:551)
at javax.swing.text.html.BlockView.getMinimumSpan(BlockView.java:361)
at javax.swing.text.html.TableView.checkSingleColumnCell(TableView.java:444)
at javax.swing.text.html.TableView.calculateColumnRequirements(TableView.java:407)
at javax.swing.text.html.TableView.calculateMinorAxisRequirements(TableView.java:529)
at javax.swing.text.BoxView.checkRequests(BoxView.java:918)
at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:551)
at javax.swing.text.BoxView.calculateMinorAxisRequirements(BoxView.java:886)
at javax.swing.text.html.BlockView.calculateMinorAxisRequirements(BlockView.java:129)
at javax.swing.text.BoxView.checkRequests(BoxView.java:918)
at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:551)
at javax.swing.text.html.BlockView.getMinimumSpan(BlockView.java:361)
at javax.swing.text.BoxView.calculateMinorAxisRequirements(BoxView.java:886)
at javax.swing.text.html.BlockView.calculateMinorAxisRequirements(BlockView.java:129)
at javax.swing.text.BoxView.checkRequests(BoxView.java:918)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:326)
at javax.swing.text.BoxView.layout(BoxView.java:691)
at javax.swing.text.BoxView.setSize(BoxView.java:380)
at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1702)
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:900)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1642)
at javax.swing.JEditorPane.getPreferredSize(JEditorPane.java:1412)
at gui.ava.html.image.generator.HtmlImageGenerator.getBufferedImage(HtmlImageGenerator.java:150)
at gui.ava.html.image.generator.HtmlImageGenerator.saveAsImage(HtmlImageGenerator.java:133)
at gui.ava.html.image.generator.HtmlImageGenerator.saveAsImage(HtmlImageGenerator.java:128)
at com.atcc.auto.mcms.process.parse.chain.ImageHandler.imgHandle(ImageHandler.java:170)
at com.atcc.auto.mcms.process.parse.chain.ImageHandler.handle(ImageHandler.java:91)
at com.atcc.auto.mcms.process.parse.chain.ContentHandler.nextStepHandle(ContentHandler.java:125)
at com.atcc.auto.mcms.process.parse.chain.ContentHandler.handle(ContentHandler.java:109)
at com.atcc.auto.mcms.core.service.impl.HandelManagerImpl$2.run(HandelManagerImpl.java:94)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)



"pool-2-thread-1" prio=10 tid=0x00007fe80c538000 nid=0x4474 in Object.wait() [0x00007fe88cbd9000]
   java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
at java.awt.MediaTracker.waitForID(MediaTracker.java:651)
- locked <0x00000007822f81a0> (a java.awt.MediaTracker)
at javax.swing.ImageIcon.loadImage(ImageIcon.java:278)
- locked <0x00000007822f81a0> (a java.awt.MediaTracker)
at javax.swing.ImageIcon.setImage(ImageIcon.java:344)
at javax.swing.text.html.ImageView.loadImage(ImageView.java:679)
at javax.swing.text.html.ImageView.refreshImage(ImageView.java:648)
at javax.swing.text.html.ImageView.sync(ImageView.java:620)
at javax.swing.text.html.ImageView.getPreferredSpan(ImageView.java:418)
at javax.swing.text.FlowView$LogicalView.getPreferredSpan(FlowView.java:715)
at javax.swing.text.FlowView.calculateMinorAxisRequirements(FlowView.java:216)
at javax.swing.text.html.ParagraphView.calculateMinorAxisRequirements(ParagraphView.java:128)
at javax.swing.text.BoxView.checkRequests(BoxView.java:918)
at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:551)
at javax.swing.text.html.ParagraphView.getMinimumSpan(ParagraphView.java:261)
at javax.swing.text.BoxView.calculateMinorAxisRequirements(BoxView.java:886)
at javax.swing.text.html.BlockView.calculateMinorAxisRequirements(BlockView.java:129)
at javax.swing.text.html.TableView$CellView.calculateMinorAxisRequirements(TableView.java:1769)
at javax.swing.text.BoxView.checkRequests(BoxView.java:918)
at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:551)
at javax.swing.text.html.BlockView.getMinimumSpan(BlockView.java:361)
at javax.swing.text.html.TableView.checkSingleColumnCell(TableView.java:444)
at javax.swing.text.html.TableView.calculateColumnRequirements(TableView.java:407)
at javax.swing.text.html.TableView.calculateMinorAxisRequirements(TableView.java:529)
at javax.swing.text.BoxView.checkRequests(BoxView.java:918)
at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:551)
at javax.swing.text.BoxView.calculateMinorAxisRequirements(BoxView.java:886)
at javax.swing.text.html.BlockView.calculateMinorAxisRequirements(BlockView.java:129)
at javax.swing.text.BoxView.checkRequests(BoxView.java:918)
at javax.swing.text.BoxView.getMinimumSpan(BoxView.java:551)
at javax.swing.text.html.BlockView.getMinimumSpan(BlockView.java:361)
at javax.swing.text.BoxView.calculateMinorAxisRequirements(BoxView.java:886)
at javax.swing.text.html.BlockView.calculateMinorAxisRequirements(BlockView.java:129)
at javax.swing.text.BoxView.checkRequests(BoxView.java:918)
at javax.swing.text.BoxView.setSpanOnAxis(BoxView.java:326)
at javax.swing.text.BoxView.layout(BoxView.java:691)
at javax.swing.text.BoxView.setSize(BoxView.java:380)
at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(BasicTextUI.java:1702)
at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:900)
at javax.swing.JComponent.getPreferredSize(JComponent.java:1642)
at javax.swing.JEditorPane.getPreferredSize(JEditorPane.java:1412)
at gui.ava.html.image.generator.HtmlImageGenerator.getBufferedImage(HtmlImageGenerator.java:150)
at gui.ava.html.image.generator.HtmlImageGenerator.saveAsImage(HtmlImageGenerator.java:133)
at gui.ava.html.image.generator.HtmlImageGenerator.saveAsImage(HtmlImageGenerator.java:128)
at com.atcc.auto.mcms.process.parse.chain.ImageHandler.imgHandle(ImageHandler.java:170)
at com.atcc.auto.mcms.process.parse.chain.ImageHandler.handle(ImageHandler.java:91)
at com.atcc.auto.mcms.process.parse.chain.ContentHandler.nextStepHandle(ContentHandler.java:125)
at com.atcc.auto.mcms.process.parse.chain.ContentHandler.handle(ContentHandler.java:109)
at com.atcc.auto.mcms.core.service.impl.HandelManagerImpl$2.run(HandelManagerImpl.java:94)
at java.util.concurrent.ThreadPoolExecutor$CallerRunsPolicy.rejectedExecution(ThreadPoolExecutor.java:1752)
at java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:768)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:656)
at org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor.execute(ThreadPoolTaskExecutor.java:242)
at com.atcc.auto.mcms.core.service.impl.HandelManagerImpl.handler(HandelManagerImpl.java:87)
at com.atcc.auto.mcms.scheduling.news.NewsPushJob.pushQueue(NewsPushJob.java:42)
at sun.reflect.GeneratedMethodAccessor107.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:64)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:53)
at org.springframework.scheduling.concurrent.ReschedulingRunnable.run(ReschedulingRunnable.java:81)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:98)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:206)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:662)

问题补充:有人能帮忙看看么?
真是找不到答案 了
2014年12月15日 16:03

3个答案 按时间排序 按投票排序

0 0

你可以观察一个线程跑的时候执行的时间,调整线程池大小,然后优化一下阻塞线程最长时间 试试 祝你好运

2014年12月19日 17:40
0 0

从这个日志里看所有的runnable的线程都是socket相关的,而且有两个被waiting to lock的锁0x0000000781e63350和0x0000000781efa278也都被runnable的线程locked住了。所以是不是可以分析下与服务器caucho交互的地方有没有阻塞发生。就这些发现了。

2014年12月16日 15:41
0 0

我在你的附件里找到这么一条信息:
resin-port-80-465" daemon prio=10 tid=0x00007fe870019000 nid=0x22b0 runnable [0x00007fe8acd4a000]
   java.lang.Thread.State: RUNNABLE
at java.net.PlainSocketImpl.socketAccept(Native Method)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:408)
- locked <0x0000000781e63350> (a java.net.SocksSocketImpl)

同时,
"resin-port-80-26" daemon prio=10 tid=0x00007fe87001f000 nid=0x4457 waiting for monitor entry [0x00007fe8aca47000]
   java.lang.Thread.State: BLOCKED (on object monitor)
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:406)
- waiting to lock <0x0000000781e63350> (a java.net.SocksSocketImpl)
at java.net.ServerSocket.implAccept(ServerSocket.java:462)
at java.net.ServerSocket.accept(ServerSocket.java:430)
at com.caucho.vfs.QServerSocketWrapper.accept(QServerSocketWrapper.java:105)

也就是说<0x0000000781e63350>被resin-port-80-465锁住了,为什么被锁住呢?因为resin-port-80-465一直处在socketAccept状态,也就是说你的远程响应出问题了。仔细排查下你的远程服务。

2014年12月16日 14:39

相关推荐

    Java线程池及观察者模式解决多线程意外死亡重启问题

    Java线程池是Java并发编程中的重要组成部分,它允许开发者高效地管理多个并发执行的线程,有效地控制系统的资源消耗,提高系统性能和稳定性。在Java中,`java.util.concurrent`包提供了`ExecutorService`接口及其...

    多线程学习笔记,关于创建线程,删除线程等相关指令的应用。

    在计算机科学中,多线程是一种编程模型,允许一个应用程序同时执行多个任务。这提高了系统的效率,特别是对于处理大量并发操作的情况。以下是一些关于多线程的重要知识点,特别是关于在Linux和Windows环境下创建和...

    LINUX查看和处理僵死进程

    "LINUX查看和处理僵死进程" 在LINUX系统中,僵死进程(Zombie Process)是一个非常重要的概念。僵死进程是指已经死亡的进程,但是没有释放系统资源,包括内存和一些系统表等。如果这样的进程很多,会引发系统问题。...

    并发编程面试专题及答案(下).pdf

    使用`jstack`工具可以获取线程转储,分析时需查看是否有死锁、线程阻塞、线程僵死等情况。 11) **start()与run()的差异**:调用`start()`方法会启动新线程并执行`run()`方法中的代码。直接调用`run()`方法则在当前...

    VC多线程编程(转).pdf

    死锁则是多个线程相互等待对方释放资源,造成程序僵死。为了实现线程安全,常用的方法有互斥锁(锁机制)、原子操作、避免共享变量(如使用局部变量或线程局部存储)等。 最后,对多线程程序的调试往往比单线程程序...

    Linux僵死进程的产生与避免.pdf

    Linux僵死进程的产生与避免 Linux 操作系统中,僵死进程(Zombie Process)是一种特殊的进程状态,它是指一个进程已经终止,但是其父进程没有通过wait或waitpid函数来回收它的状态信息,而使得进程所占用的资源...

    芒果TV ELK日志系统实践 -刘波涛

    - **解决方案**: 使用自定义Java程序替代Logstash,实现更高效的日志处理。 - **Elasticsearch优化**: - **SSD替代传统硬盘**: 减少随机写磁盘的瓶颈。 - **Index.refresh_interval**: 增加刷新间隔,减轻系统...

    安卓app之间的socket通信,支持多线程

    - 合理设置Socket的超时时间,防止程序僵死。 7. **实际应用示例**: - 文件传输:两个应用之间可以实时传输文件,比如通过Socket发送图片或文档。 - 实时消息系统:类似即时聊天应用,用户可以通过Socket发送和...

    2020年蚂蚁金服-Java高级.pdf

    "2020年蚂蚁金服-Java高级面试题" 本资源摘要信息涵盖了 Java 高级面试题,涵盖了多个知识点,包括 Java 基础知识、集合框架、并发编程、Java 虚拟机(JVM)机制、垃圾回收机制、元数据管理、类加载机制等。 1. ...

    java面试题汇总及详解(进大厂必看)(65页).pdf

    当线程执行完毕但其父进程未回收资源时,会产生僵死进程。 **二、线程安全** 线程安全是指在多线程环境下,多个线程访问同一段代码时,不会出现数据不一致或异常。实现线程安全的方法包括:synchronized关键字...

    linux 僵死进程

    linux 查找僵死进程,重启服务,有利于知道哪些服务已经死掉进程还在

    oracle杀僵死进程

    ### Oracle杀僵死进程 在Oracle数据库管理过程中,经常会遇到僵死进程的问题,这些问题可能会导致数据库性能下降甚至无法正常运行。本文将详细介绍如何通过SQL查询定位僵死进程,并提供具体的解决方案,帮助解决如...

    进程线程的一些特点、信号、守护进程线程的一些锁、条件变量等知识

    在处理进程和线程时,有时会出现僵死(僵尸)进程,即父进程没有等待并回收子进程的状态信息,导致子进程成为僵尸状态。为了避免这种情况,父进程应当调用`wait()`或`waitpid()`函数来收集子进程的退出状态。 在...

    行业分类-设备装置-一种僵死低效进程的识别方法和识别设备.zip

    本文将深入探讨标题和描述中提及的主题——“一种僵死低效进程的识别方法和识别设备”。我们将详细解析这一问题,并讨论如何有效地识别和处理这些进程,以确保系统的稳定性和效率。 首先,让我们了解什么是“僵死”...

    inux系统分析之进程线程

    ### Linux系统分析之进程与线程 #### 一、进程的概念与组成 进程是操作系统为了管理正在执行的程序而引入的基本单位。一个进程不仅包含了正在执行的程序代码本身,还包括了该程序执行所需的资源,如虚拟处理器、...

    大型企业公司OracleDBA维护和点检手册.pdf

    - 查看是否有僵死进程 - 检查行链接/迁移 - 定期做统计分析 - 检查缓冲区命中率 - 检查共享池命中率 - 检查日志缓冲区 6. **检查数据库安全性** - 检查系统安全日志信息 - 检查用户修改密码 7. **其他检查...

    linux 线程池实现

    2. **僵死线程处理**:线程执行完毕后如果没有被正确清理或重用,可能会成为“僵死线程”,占用系统资源。合理地处理这些僵死线程对于维持线程池的高效运作至关重要。 #### 三、线程池的具体实现 ##### 3.1 核心...

    查看LINUX进程内存占用情况

    S 表示休眠,R 表示正在运行,Z 表示僵死状态,N 表示该进程优先值为负数 * %CPU:进程占用 CPU 的使用率 * %MEM:进程使用的物理内存和总内存的百分比 * TIME+:该进程启动后占用的总的 CPU 时间,即占用 CPU 使用...

    Linux进程、线程和调度(1)

    Linux作为一个多用户多任务的现代操作系统,其进程和线程的管理是系统设计的重要组成部分。在Linux中,进程管理涉及进程的创建、执行、状态转换和退出等,而线程作为一种轻量级的进程,为程序并发执行提供了条件。...

Global site tag (gtag.js) - Google Analytics