多线程
文章平均质量分 81
qiaoHaoTing
这个作者很懒,什么都没留下…
展开
-
千万级实时并发计算设计
本文简单介绍一个系统监控告警AI异常检测实时计算的架构数据归一化由于数据采集工具多样性,自然导致数据格式的多样性,所以需要对数据格式进行统一。比如对数据库层面的监控、对应用层面的监控,主机的监控,网络的监控,每种监控采用的方式不一样,工具不一样,采集出来的数据格式也会不一样,作为告警引擎中心,需要对监控采集值的格式进行转换,统一格式。当采集端把数据传输过来的时候,先通过一个数据转换的应用(代理)把数据处理成统一的格式。又由于网络环境的不一,同时加上安全要求,还需要对不同的环境提供不同的接收方式,一种原创 2021-01-10 15:23:30 · 464 阅读 · 1 评论 -
commons-lang2.6在高并发下使用ExceptionUtils.getFullStackTrace()获取异常详情导致的性能下降
某天,在不知情的情况下,实施私自接入了某其他平台数据,由于数据不规范,导致生产出现阶段性大面积异常报错,有大量线程阻塞,处于BLOCKED状态,应用性能下降一倍。通过线程堆栈日志定位到:阻塞线程都阻塞在org.apache.commons.lang.exception.ExceptionUtils.getCause()处,并且在等待的是一个对象锁,查看源码(commons-lang的2.6版本)发现getCause中会先获取锁,然后通过反射的方式获取异常的详情,反射存在性能问题,在高并发下,导致大量线程阻塞原创 2021-01-06 21:22:58 · 147475 阅读 · 1 评论 -
SpringBoot定时调度Scheduled默认配置(单线程)导致的业务延迟
项目后台组件运用了Schedule每分钟启动一个job把数据发送到kafka(生产者),通过kafka的负载均衡分发到消费者中。在某个夜黑风高的夜晚,运维GG通过监控发现kafka写入出现每分钟不连续的现象,在没有数据写入的时段,消费线程一直处于等待状态。由于除了生产者任务job之外,还在存在其他定时job,随着业务的发展,其他job的数据量上升之后,加上Schedule调度使用了默认的配置,在一个分钟内处理不完所有的定时job,导致下一分钟的job任务得到不到执行,从而导致了业务延迟。通过下面的例子来原创 2020-12-15 01:05:01 · 149992 阅读 · 1 评论 -
Java死锁可以这样来理解
原创 2020-11-29 21:57:32 · 256 阅读 · 0 评论