首页 > 编程语言 >导致程序卡死,及cpu无端占用的2个bug

导致程序卡死,及cpu无端占用的2个bug

时间:2024-09-06 17:47:45浏览次数:12  
标签:panicked tx err cpu func error Commit 卡死 bug

1、程序初始化日志系统以后,单核cpu被吃满
原因 pprof 打印出来 全是系统调用,经分析是日志落盘时间设置成了0,导致一直在空写入
解决办法 增加写入间隔时间 不要时时刻刻落盘

2、程序突然hang死,无反应,使用pprof 记录全是 gorm,超过10万次出现,数据库方便,全是死连接,
原因
有代码忘了关闭事务,导致全是死连接,应用程序都在等待可用的数据库连接
解决办法
1、注意关闭事务
2、使用gorm 提供的方法 Transaction, 这个函数里面处理了panic error 和Rollback 及Commit
`
func (s *DB) Transaction(fc func(tx *DB) error) (err error) {

if _, ok := s.db.(*sql.Tx); ok {
	return fc(s)
}

panicked := true
tx := s.Begin()
defer func() {
	// Make sure to rollback when panic, Block error or Commit error
	if panicked || err != nil {
		tx.Rollback()
	}
}()

err = fc(tx)

if err == nil {
	err = tx.Commit().Error
}

panicked = false
return

}`

标签:panicked,tx,err,cpu,func,error,Commit,卡死,bug
From: https://www.cnblogs.com/timevalue/p/18400726

相关文章

  • CPU性能分析
    查看上下文切换vmstat是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析CPU上下文切换和中断的次数。#vmstat5procs-----------memory-------------swap-------io-----system--------cpu-----rbswpdfreebuffcachesiso......
  • QT5 掌握debug调试的方法(简要内容:Memory查看内存地址的数值 和 查看变量值)(图文并茂)
    A1——选择构建模式(选项:debug调试、release发行、profile不知道…)A2——开始运行A3——开始调试(仅在debug调试模式下,断点调试助手才有效)A4——执行构建(生成输出目录及相应的文件,路径要求与工程的路径同级)A1——鼠标悬停变量名弹出,可固定窗口,Qt查看变量值的......
  • 【VBA基础教程篇】Excel-VBA Debug调试相关操作
    Excel-VBADebug调试相关操作在工作窗口,上方菜单栏中,有一个专门的额菜单:Debug菜单,里面有debug相关操作。除此之外你也需要一些辅助窗口来帮助你更好的进行调试,1.Immediatewindow(立即窗口):类似其他IDE的console控制台。显示快捷键:Ctrl+G,也可以点击菜单栏View->Immediatewin......
  • 发现一个 grafana 的神奇bug (版本:Grafana v7.5.3 (42f2079))
    某个api的延迟始终显示不出来,研究了很久的promql表达式的计算细节,也没找到原因。面板展示如下:但是当我选择另一个api的延迟曲线的时候,又对了:如果我选择展示所有曲线,仍然显示不出来:可见:是某条曲线的数据可能有某种问题,导致所有曲线都无法展示。应该是个纯前端ui的问......
  • 怎么理解cpu内核&多核
    References:cpu多核的来历,cpu性能与核心数的联系如何理解处理器、CPU、多处理器、内核、多核?内核/逻辑处理器/线程/多线程/多CPU/多核CPUCPU相关概念:物理cpu数、核数、逻辑cpu数,12核20线程实例分析Multi-CoreonChipArchitecture*doc-IKsingle-corevsmulti-core......
  • web-worker 利用多核 CPU 性能优化
    执行四个耗时任务,对比效果 <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>WebW......
  • PM864AK01-eA-3BSE018161R2 CPU单元处理器
    ABBPM864AKO1 eA3BSE018161R2  CPU单元处理器产品详情:CPU单元处理器的应用领域与处理器单元套件相似,可能包括但不限于以下几个方面:1.工业自动化控制:CPU单元处理器可以用于工业过程控制、生产线自动化、机械控制等领域,以实现各种自动化控制任务。2.分布式控制系统......
  • C语言练习:扫雷游戏(排除了一些bug,放心食用!)
    游戏规则只有雷被全部排查出来,游戏结束。每当排查一个坐标,如果不是雷,此坐标上就会显示周围一圈上有几个雷。 游戏实现代码讲解开始前的准备首先我们假定一个9*9的棋盘格展示在玩家面前(如下图所示,坐标从0开始)但是对于玩家来说,第一个编号是从0开始的不太习惯,所以我们要在......
  • ubuntu任何版本 卡死 解决办法
    首先,我们一定要记得ubuntu一定不要强制关机,一定,一定因为90%的可能你的电脑从此就会黑屏开不了机了,然后你就可以按照我的方法去卸载,重装ubuntu系统了。/(ㄒoㄒ)/~~(如果能解决您的问题,给个三连,小弟我就不胜感激了)方法一.ubuntu突然卡机且无法操作时(不需要关机)在进行下列步骤......
  • 鸿蒙内核源码分析 (协处理器篇) | CPU 的好帮手
    本篇很重要,对CP15协处理所有16个寄存器一一介绍,可能是全网介绍CP15最全面的一篇,鸿蒙内核的汇编部分(尤其开机启动)中会使用,熟练掌握后看汇编代码将如虎添翼。协处理器协处理器 (co-processor)顾名思义是协助主处理器完成工作,例如浮点、图像、音频处理这一类外围工作。角色相当于......