线程异常WAITING(parking)

这篇具有很好参考价值的文章主要介绍了线程异常WAITING(parking)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 现象:在项目中线程数量持续增长,且基本无法回收关闭,线程数量一直累积达到几万,影响CPU开销和性能,导致服务器卡死,连接上服务器后输入指令提示“无可分配内存”。

  • 查找原因:

  1. 通过ps -eLf|grep '容器名'|wc -l命令找到项目的所占的线程数异常庞大,通过top -p pid H也发现该进程下大量占用资源的线程。进入容器内查看堆栈信息。

waiting(parking),java,spring,jvm,Powered by 金山文档
waiting(parking),java,spring,jvm,Powered by 金山文档
  1. 通过**jstack -l pid| grep 'java.lang.Thread.State'**发现项目的线程状态大多数都是WAITING(parking)状态,分析是线程一直处于等待状态一直在占用,造成GC无法执行,且新请求进来时造成线程占用累计。

waiting(parking),java,spring,jvm,Powered by 金山文档
  1. 打印当前JVM快照:**jstack 7 > /opt/test.dump**,查看快照定位原因:

waiting(parking),java,spring,jvm,Powered by 金山文档
  • 分析原因:在我的业务中每次处理请求时都会创建一个线程池去多链路执行不同的流程,但是执行完毕后没有使用shutdown()关闭这个线程池对象,这样线程池仍会通过take方法去取等待队列中是否还有未完成的线程任务,等待队列为空时将会一直等待,这样就导致大量的线程hung在这里了(基本是只要方法被调一次,就会产生一个hung住的线程),所以有大量空线程一直占用,造成严重的线程泄漏

  • 总结:在自定义线程池且未交给spring容器管理时,使用完毕的线程池一定要执行shutDown()手动关闭线程池,这是编程上的疏忽。找到原因后感觉问题很简单,但是查找过程中还是碰壁不少,找过几次都没有找到最终原因。

  • 参考:

  • 案例解析:线程池使用不当导致的系统崩溃 - 【雨歌】 - 博客园 (cnblogs.com)

  • (10条消息) CPU飙高,频繁GC,怎么排查_频繁gc如何排查_Impl_Sunny的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-561661.html

到了这里,关于线程异常WAITING(parking)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • fastboot时,出现“< waiting for any device >”的处理方法

    首先,要下载Android SDK Platform-Tools驱动。 1.将设备通过usb连接电脑,我的电脑,右键,管理→设备管理 2.在不明设备上右键,选择更新驱动程序 3.选择 游览我的电脑以查找驱动程序 4.选择下载好的谷歌usb驱动的文件夹usb_driver,点击确定 Android SDK Platform-Tools 是 Android SDK 的一个

    2024年02月12日
    浏览(32)
  • IntelliJ IDEA - Github Copilot Waiting for Authorization [一篇必解决]

    问题现状 好不容易安装好 Github Copilot 插件后,也授权成功了,但一直显示这个…… 方法一 手动安装旧版本(1.1.20.1417),但会报错,说是需要更新到最新版本 方法二 1、将你的 copilot 更新到最新版本(1.1.24.1610) 2、下载这个版本的 github-copilot(1.1.20.1417) https://plugins.jetbrain

    2024年02月09日
    浏览(39)
  • vscode 一直报 waiting for server log,无法远程连接到服务器

    vscode 一直报 waiting for server log,无法远程连接到服务器 问题描述: 连接时一直报 waiting for server log 并最后 local server exit:15 stderr cat: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: No such file or directory 在网上搜到的答案基本都是下列两种: 试过之后都无效,最终发现, 问题就是出在: /u

    2024年02月04日
    浏览(44)
  • Unity - Render Doc - 解决 Waiting For Debugger 导致连接不了 APP 的问题

    Unity : 2020.3.37f1 Pipeline : BRP RDC : 1.26 平常有一些公司内的游戏发布在移动端运行会有各种异常,但是 unity editor (android + opengl es / dx) 下正常 如果没有真机抓帧分析,是搞不定的 然后 RenderDoc 在抓发布出来的调试包也抓不了 调试包环境: development build + android manifest 开启 applica

    2024年02月03日
    浏览(35)
  • 解决oracle死锁,生产问题,ORA-00060: deadlock detected while waiting for resource,

    目录 项目场景: 问题描述 原因分析: 解决方案: 其他解决方案: oracle 数据库在做大量的批量更新同一张表数据。 早上来公司去生产环境查grelog日志,发现ERROR日志,点进去看后报如下错误: 从错误的中一看就知道oracle 数据库发生了死锁。去生产的log日志查看,发现同一

    2024年02月17日
    浏览(33)
  • Vscode连接服务器时一直卡在Waiting for Downloading VS Code Server

    网络问题 :这是 vscode-servlet.tar.gz 下载时卡住了,网络原因一直下不下来。 解决方案 :可以本地下载后,再传上去。 找到 commit_id vscode的输出信息中有这个 commit_id , 或者通过其他工具如xshell连接上服务器后,在.vscode-server/bin 文件夹中找到这个commit_id。 ls /home/test/.vscode-ser

    2024年02月11日
    浏览(39)
  • org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool

    Java HttpUtil 出现错误: org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool         最近项目中大量调用http请求,线上出现了 ConnectionPoolTimeoutException  这个问题,但是本地服务器一直没能复现出来,但是定位问题应该是之前调用http的工具类封装的有问

    2024年02月13日
    浏览(38)
  • Flutter报错:Waiting for another flutter command to release the startup lock

    翻译:等待另一个flutter命令释放启动锁,也就是上一个 flutter 命令还未结束,又执行了另外一个 flutter 命令,或者刚启动项目时,项目还没有加载完毕,执行了一个 flutter 命令。 解决方法: 1、关闭vscode 2、打开flutter sdk按路径找到  bin/cache/lockfile 3、删除lockfile文件 若删除

    2024年02月16日
    浏览(50)
  • 【Kafka超时问题(已解决),kafka.zookeeper.ZooKeeperClientTimeoutException: Timed out waiting for connection w】

    1.Kafka正常运行一段时间后,用测试工具发送数据时报了错: 2.于是单独用黑窗口启动Kafka,看看具体报啥错: 3.原因 JDK版本和Kafka版本不匹配 。 (我手里项目较多,用的JDK版本也不一样,有的时候忘了把JDK切换回去,就报了这个错)。 我的Kafka版本: 更换JDK版本或Kafka版本

    2024年02月09日
    浏览(39)
  • GitHub Actions Error “Waiting for a runner to pick up this job”

    GitHub Actions 是一个 CI/CD(持续集成和持续部署)平台,可以让您自动化工作流程并与 GitHub 存储库中的代码集成。使用 GitHub Actions,您可以配置自动化任务来处理代码更改,例如自动运行测试、构建、部署和发布工件等。 GitHub Actions 是一种基于事件驱动的自动化工具,允许您

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包