Java对多线程有良好的支持,并且提供了方便使用的线程池框架(Executor)。但如果使用不当,可能会带来一些不安全的隐患。本文将分享一次由于随意创建线程池造成线程数持续增加的问题。 一、背景 首先看一个图,下图是线上服务器Java线程数的监控图。 图中每个下降的点都是在该时间点有上线 ...
在高并发 异步化等场景,线程池的运用可以说无处不在。线程池从本质上来讲,即通过空间换取时间,因为线程的创建和销毁都是要消耗资源和时间的,对于大量使用线程的场景,使用池化管理可以延迟线程的销毁,大大提高单个线程的复用能力,进一步提升整体性能。 今天遇到了一个比较典型的线上问题,刚好和线程池有关,另外涉及到死锁 jstack命令的使用 JDK不同线程池的适合场景等知识点,同时整个调查思路可以借鉴,特此 ...
2020-06-12 14:52 4 830 推荐指数:
Java对多线程有良好的支持,并且提供了方便使用的线程池框架(Executor)。但如果使用不当,可能会带来一些不安全的隐患。本文将分享一次由于随意创建线程池造成线程数持续增加的问题。 一、背景 首先看一个图,下图是线上服务器Java线程数的监控图。 图中每个下降的点都是在该时间点有上线 ...
线程池是个好东西,最大线程数限制了服务无限制使用宝贵的操作系统线程,最大队列保护内存溢出,完美! 但是线程池使用不当也会导致死锁。这种死锁,要是不知道原理,死都不知道咋死的,并且非常难定位。大家知道,死锁一般都是由于资源征用引起的。而线程池引起的死锁,可能连个synchronize关键字都没有 ...
1、事故问题: 某个旧版本业务功能中运行了一个失败重试的job,因一位离职的同事编码时未考虑周全出现死循环,导致线上从24日下午2点一直到27日晚9点持续3天一直在刷日志。异常日志内容如下: 2、事故过程分析: ①、根据异常日志 ...
> 线上用户存储数据后查看提示无权限 前言 不知道什么时候年轻的我曾一度认为Java没啥难度,没有我实现不了的需求,没有我解不了的bug 直到我遇到至今难忘的一个bug 。 线上用户存储数据后查看提示无权限 初次定位 明明自己添加的数据,为什么提示 ...
今天线上的hadoop集群崩溃了,现象是namenode一直在GC,长时间无法正常服务。最后运维大神各种倒腾内存,GC稳定后,服务正常。虽说全程在打酱油,但是也跟着学习不少的东西。 第一个问题:为什么会频繁GC 有过JVM经验的开发者都应该知道,GC是在内存不够时,JVM自动进行 ...
故障时间轴 发生时间:2020-09-14 06:40 发现时间:2020-09-14 06:41 响应时间:2020-09-14 07:42 故障表现 磁盘> ...
背景 2018年8月15号下午6点左右一个我们服务的调用方通知我们他们在调用服务接口时出现了大量的异常和通知,并且错误返回值都是“显示未设置结束日期” 问题定位 收到调用方的消息后,我立即展 ...
作为一个牛逼的程序员,相信大家肯定是接触过多线程的概念的。并且可能会在实际的工作中因为一些业务场景需要使用自定义线程池来执行批量的任务或对线程进行管理。同样,我们项目中也存在一个两个场景需要使用线程池。而这两个场景分别为: 1、持续监听某个外部接口的不间断的返回信息,其实就是长链接的阻塞接口 ...