
bug及解决方案
文章平均质量分 74
问题记录及解决方案
_whitepure
这个作者很懒,什么都没留下…
展开
-
Java程序的故障排查
线程快照是当前JVM内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待等。命令可以获得运行中的JVM的堆的快照,从而可以离线分析堆,来检查内存泄漏、检查一些严重影响性能的大对象的创建、检查系统中什么对象最多,各种对象所占内存的大小等等。通过这些命令,可以生成和分析堆转储,查看线程状态,获取JVM配置信息等。可用于显示虚拟机进程及进程的配置和环境信息,监视应用程序的CPU、GC、堆、方法区及线程的信息等,甚至代替。原创 2024-07-21 09:23:23 · 1161 阅读 · 0 评论 -
解决死锁问题
资源有序分配法指的是,线程 A 和 线程 B 获取资源的顺序要一样,当线程 A 先尝试获取资源 A,然后尝试获取资源 B 的时候,线程 B 同样也是先尝试获取资源 A,然后尝试获取资源 B。在银行中,客户申请贷款的数量是有限的,每个客户在第一次申请贷款时要声明完成该项目所需的最大资金量,在满足所有贷款要求时,客户应及时归还。举例,现有公司B、公司A、公司T,想要从银行分别贷款70亿、40亿、50亿,假设银行只有100亿供放贷,如果借不到企业最大需求的钱,钱将不会归还,怎么才能合理的放贷?原创 2024-07-20 11:25:34 · 1087 阅读 · 0 评论 -
解决内存泄漏问题
内存泄露是指,程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。简单来说,就是应该被垃圾回收的对象没有回收掉,导致占用的内存越来越多,最终导致内存溢出。如果当前完全垃圾回收后内存增长到一个值之后,又能回落,总体上处于一个动态平衡,那么内存泄漏基本可以排除;也可以隔断时间抽取老年代占用内存情况,如果老年代占用情况持续上升也很有可能存在内存泄露的情况。,找到堆内存中占用最大的对象,内存泄漏很有可能就是由大对象导致的;原创 2024-04-17 16:35:32 · 887 阅读 · 0 评论 -
解决线上接口慢
如果应用程序没有接入APM,可以在生产环境装一下arthas,利用trace接口方法和火焰图,大概能分析是那一块比较慢,定位能力稍微有点粗糙。线上接口很慢,线上生产问题,我们绝对不能马虎放过抱着侥幸心理,必须要找到根本原因及时处理,防止下次留下更大的坑.大致思路要定位接口问题,然后具体问题具体分析,讨论不同解决方案.要快速定位接口哪一个环节比较慢,性能瓶颈在哪里,可以使用应用性能监控工具(APM)定位问题。常见工具: skywalking、pinpoint、cat、zipkin。原创 2024-04-12 14:26:10 · 514 阅读 · 0 评论 -
常见程序故障排查及程序配置
导入dump文件:在生成可疑泄漏报告后,会在对应的堆转储文件目录下生成一个zip文件。MAT最主要的功能是分析dump文件,其中比较重要的功能就是histogram(直方图)和dominator tree(支配树)原创 2024-04-12 13:34:58 · 952 阅读 · 0 评论 -
如何减少bug及解决bug思路
减少bug的出现只能多测多验证,哪怕单元测试通过都不能非常有效减少bug,因为受到写单元测试的人的思维角度限制,导致单元测试的片面性。1945年,一只小飞蛾钻进了计算机电路里,导致系统无法工作,一位名叫格蕾丝·赫柏的人把飞蛾拍死在工作日志上,写道:就是这个 bug(虫子),害我们今天的工作无法完成——于是,bug一词成了电脑系统程序的专业术语,形容那些系统中的缺陷或问题。关于bug的种类,最容易出现的bug是逻辑上的bug,如复杂庞大一点软件如果不是所有地方都熟悉就写代码是比较容易遗漏一些特殊情况的。原创 2023-05-05 09:31:28 · 2429 阅读 · 0 评论 -
集成SpringSecurity默认登录效果并解决Forbidden 403问题
集成SpringSecurity默认登录,项目里面任何的请求都会先通过security在访问系统的接口。原创 2023-03-10 19:15:15 · 1410 阅读 · 0 评论 -
ORA-03113 end-of-file on communication channel
文章目录问题问题原因问题解决删除归档日志增加归档日志空间参考文章问题用数据库连接工具发现数据库连接不上了,登陆服务器一看发现数据库满了登陆root或oracle用户;登陆root需要切换到oracle:su - oracle;使用 sqlplus / as sysdba 命令切换到sqlplus;在 sqlplus 模式下使用startup命令,开启数据库。发现启动报错:问题原因在网上简单搜了一下,原因是Oracle 数据库归档日志满了。用df -h命令看了一下磁盘空间占用情况,磁盘已经满原创 2021-07-29 11:29:01 · 5456 阅读 · 0 评论 -
解决CPU使用过高问题
一般在生产环境排查程序故障,都会查看日志什么的,但是有些故障日志是看不出来的,就比如:CPU使用过高。我们需要结合Linux命令和JDK相关命令来排查程序故障。原创 2021-06-21 21:01:04 · 1227 阅读 · 1 评论 -
gitlab-runner 设置用户为root
安装gitlab-runner默认会将用户设置为:gitlab-runner,该设置会使编写.ci的脚本,操作带来很大不便,本人深受其害。1.通过ps aux|grep gitlab-runner命令查看gitlab-runner进程,可以查看到gitlab-runner的工作目录和默认用户等一系列相关信息。2.通过该命令sudo gitlab-runner uninstall可以删除掉gitlab-runner3.重新安装gitlab-runner并将用户设置为rootgitlab-runner i原创 2020-08-16 17:30:07 · 4800 阅读 · 0 评论