
项目经验总结
文章平均质量分 71
实际工作项目,线上遇到的问题,以及故障演练,实战出真知
master-dragon
weixin:dwl_1270530306
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
缓存使用的问题代码和改进
setCache如果有异常,那么直接往上层抛异常,直接导致业务获取失败了。另外需要检查自己的过期策略配置是否正确。原创 2025-08-02 12:32:53 · 122 阅读 · 0 评论 -
大中台应用的层次抽象
所以这必然导致单体应用越来越大,且业务jar包引入的越多,jar冲突的可能就会出现,且越来越多。有一些通用能力可以沉淀,大家都用的是一样的。业务层:即业务自己的扩展逻辑,其中可以有自己业务的特定逻辑,依赖也是自己的,不与其他业务干扰。一个单体中台应用要支持的业务越来越多,必然要引入各种业务第三方jar包,用来支持不同功能。作为一个独立的平台应用,应该要保持自己的核心功能模块,但是显然也要满足不同业务方的需求。且这些业务jar包,可能由于不同业务需求而有不同的配置、版本、特性能力。原创 2025-06-12 23:38:09 · 338 阅读 · 0 评论 -
Java工具arthas的使用--结合实际工作
目录安装使用sc命令 查看JVM已加载的类信息thread命令dashboard命令在这里插入图片描述安装使用help命令帮助cls命令清屏命令列表:https://arthas.aliyun.com/doc/commands.htmlsc命令 查看JVM已加载的类信息thread命令查看所有线程dashboard命令todo:需总结工作中实际用到的场景...原创 2021-02-28 13:55:10 · 915 阅读 · 0 评论 -
项目总结:Directed Acyclic Graph的应用
有向无环图(DAG)在视觉上表现为一组圆和线条,圆表示一个顶点,线条表示一条边。有向无环图(DAG)中每条边都有一个定义的方向,每条边都是从一个顶点到另一个顶点的单方向流。并且有向无环图是非循环的,对于任何顶点来讲,如果沿着通过顶点连接到另一个顶点的边,是无法返回该初始顶点。既是总结也是复习下各种知识点和算法基础。原创 2025-03-09 13:38:15 · 722 阅读 · 0 评论 -
项目总结:java agent的使用
测试团队会做java agent的事,实现测试模拟,各种数据采集等等工作,而这些不需要开发改代码来做到,只需要挂载下agent。不改变代码,而是在java命令后加入实现对class的干预https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.htmlProvides services that allow Java programming language agents to instrument pro原创 2025-02-13 23:45:25 · 995 阅读 · 0 评论 -
项目总结: 应用程序的扩展bundle化,自定义classLoader
本例子知识简单的描述了下实践,实现也是简单的demo业务可以编写自己的spring程序,有自己的依赖和逻辑业务可以自己打包程序比如app-test.jar, app-demo.jar, 然后交给主应用主应用可以提供扩展,加载app-test.jar, app-demo.jar里面的程序;通过自定义classLoader可以实现类隔离比如app-test依赖 fastjson 1.0.0 版本, app-demo可以依赖 fastjson 2.0.0;原创 2025-02-10 22:36:13 · 512 阅读 · 0 评论 -
maven依赖gav的diff比较
对于一个工程项目,前后依赖的jar包要比较审批,以免因为某些依赖增删改导致线上故障。如下:(左右空字符串认为是不存在,前端就能清晰的用表格diff出来。原创 2024-11-30 10:49:12 · 439 阅读 · 0 评论 -
抽象一个通用的配置冲突解决方案
配置冲突,配置合并原创 2024-06-02 10:49:07 · 290 阅读 · 0 评论 -
Mac vsCode快捷键&插件总结
mac vscode快捷操作和实战原创 2022-09-17 11:21:49 · 753 阅读 · 0 评论 -
抛给前端“Index: 0, Size: 0“错误,再次提醒RuntimeException
遇到"Index:0,Size:0"错误,古老的垃圾代码导致犯错代码演示如下importjava.util.ArrayList;importjava.util.List;classObj{intid;Stringname;}publicclassHello{finalstaticintN=5;/***其它接口*/List<Obj>getNNumberObjs(){原创 2020-10-22 23:14:42 · 6591 阅读 · 0 评论 -
【线上】加上重试机制(使用guava-retrying)
很多场景都有重试的必要,不能因为一些边界,某些抖动,不稳定因素导致一些误会和不必要的反复;如果重试能够解决问题,那么自然要使用重试原创 2019-03-26 23:25:59 · 469 阅读 · 0 评论 -
【线上】高网络IO引起的CPU负载问题
gc log截图部分如下当时是收到了cat心跳告警,当时的一些现场系统负载飙高gc & 线程Falcon查看机器的cpu,io情况磁盘IO网络IO飙高,CPU负载也飙高原因机器是8C12G的当时是开了400个线程在消费一个有400个partition的topic数据jvm设置如下:-Xms8G -Xmx8G -Xss512K-XX:+UseG1G...原创 2020-03-10 00:01:20 · 2098 阅读 · 0 评论 -
【线上】SQLAlchemy数据库连接满导致的问题
这是刚做Superset项目时遇到的线上问题,现回顾并整理下。原因和现象回顾访问高峰qps增大,然后数据库连接占用超过了SQLAlchemy设置的默认最大数量,且达到超时时间,这导致线上很多用户看到如下报错2018-11-04 11:27:50,370 /var/www/html/superset/views/base.py base.py[line:56] : ERROR QueuePool limit of size 10 overflow 10 reached, connection time原创 2020-07-13 23:56:43 · 1302 阅读 · 0 评论 -
实际项目中的一个OOM和事务的问题
所以:直接去arthas trace该方法,然后顺便去看doBiz()方法有没有重复加锁的逻辑,且doBiz()方法是耗时的;(所以去数据库查询的时候没有找到记录,然后因为很简单的sql,所以怀疑锁没有释放,去找重复加锁和释放锁为什么没有执行,结果原因在这里)实际遇到了 doBiz() 导致OOM了,导致数据库行锁没有释放,结果其它用户执行method方法全部失败。首先如上代码因为一直以来都是好的,没有遇到问题,而报错是 DUPLICATE KEY。随后又看了机器的各个log,发现了OOM异常。原创 2024-12-15 17:22:43 · 337 阅读 · 0 评论 -
【演练】Java应用频繁Full GC, OOM
目录前言演练代码故障现象jmap查看问题原因定位问题解决本文总结前言本文主要是演练java应用频繁full gc,oom,如何排查解决的过程演练代码线程池用自定义线程工厂jvm参数:-Xms20M -Xmx20M -XX:+PrintGC -Xloggc:gc.logimport java.math.BigDecimal;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.u原创 2020-07-15 23:31:59 · 1243 阅读 · 0 评论 -
【线上】查询处理由于错误变慢,进而导致tomcat线程池满,导致大量请求在线程池中等待,客户端调用超时关闭
客户端请求是60秒读超时返回,服务端一般处理查询是几十毫秒;由于特殊错误,导致处理时间变成了好几十秒了;原创 2020-07-13 23:06:02 · 1339 阅读 · 0 评论 -
【线上】jvm OOM(原因:对象实例过多)
jmap dump下来分析是一个对象实例过多,且该对象包含大json,因为是偶发,所以很诡异。最后排查原因定时任务拉取操作记录对象,拉取设置的时间范围过大为什么时间范围过大使用了一个当前时间和上一次定时任务运行时间用了本地变量去存储上一次时间,然后定时任务执行完去更新上一次时间变量一个实例倒是没什么大问题,多实例且任务是单实例运行了。那么,要是1个实例今天跑了一次定时任务,然后一直都是其它实例在跑定时任务;那么突然定时任务选中个这个实例,那么时间范围就是【1天前,now】,本来比如说1原创 2020-05-26 23:43:37 · 906 阅读 · 0 评论 -
【演练】Java CPU,内存等问题排查与定位解决
cpu 负载高排查演练1 启动java程序并观察cpu负载import java.util.*;import java.util.concurrent.TimeUnit;class Test { void testCpu(){ int num = 0; long start = System.currentTimeMillis() / 1000;...原创 2020-02-15 23:24:07 · 626 阅读 · 0 评论 -
【线上】EntityUtils.toString(resEntity,“UTF-8“) 处理时间很长问题
httpClient http 耗时久,排查是非流式处理返回数据的EntityUtils.toString(resEntity,"UTF-8")这句耗时很久,返回数据量太大了相关文档与讨论https://hc.apache.org/httpcomponents-core-ga/httpcore/apidocs/org/apache/http/util/EntityUtils.html#toSt...原创 2019-10-19 14:26:32 · 5002 阅读 · 3 评论 -
【项目总结】数据处理服务中间层系统
回忆下算法的几个特征:有穷性(Finiteness)算法的有穷性是指算法必须能在执行有限个步骤之后终止;确切性(Definiteness)算法的每一步骤必须有确切的定义;输入项(Input)一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;输出项(Output)一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是...原创 2020-03-14 15:32:28 · 710 阅读 · 0 评论 -
【项目总结】权限管理平台
权限系统原创 2019-07-20 15:19:36 · 548 阅读 · 0 评论 -
【项目总结】Superset
本文主要记录工作中,企业对开源项目Supsert(https://github.com/apache/incubator-superset)的改进,以及个人对此项目的一些总结。原创 2020-01-11 15:47:57 · 1991 阅读 · 2 评论