posted @ 2021-04-28 14:33 luoming1224 阅读(311) 评论(0) 推荐(0) 编辑
摘要:
sync.Once能确保实例化对象Do方法在多线程环境只运行一次,内部通过互斥锁实现 Do方法 Once类型的Do方法只接收一个参数,参数的类型必须是func(),即无参数无返回的函数。该方法的功能并不是对每一种参数函数都只执行一次,而是只执行首次被调用时传入的那个函数,并且之后不会再执行任何参数函 阅读全文
摘要:
背景 项目中遇到死锁,使用搜索引擎搜索goroutine堆栈中出现的“sync.runtime_Semacquire deadlock”时,搜到一篇说sync.WaitGroup死锁,特此记录一下 当然项目中的问题不是这个导致的,是sync.RWMutex重入导致的 问题复现 func TestRe 阅读全文
posted @ 2021-04-16 16:01 luoming1224 阅读(1345) 评论(0) 推荐(0) 编辑
摘要:
背景 最近项目中遇到两次RWMutex死锁问题,所以稍微看了一下资料和源码,稍作记录 源码 type RWMutex struct { w Mutex // held if there are pending writers writerSem uint32 // semaphore for wri 阅读全文
posted @ 2021-04-16 11:25 luoming1224 阅读(350) 评论(0) 推荐(0) 编辑
摘要:
现象 生产某集群各节点已使用内存比较大,在清理了大量业务无用数据后,节点已使用内存却未下降。 排查与分析 通过info memory命令查看,内存碎片率略高,但是对某个主节点新添加的从节点内存使用依然很高,所以排除了内存碎片率的问题。 然后在info memory命令返回数据中,看到 number_ 阅读全文
posted @ 2021-04-09 15:24 luoming1224 阅读(1597) 评论(0) 推荐(0) 编辑
摘要:
现象 一个组件实现了raft分布式协议,在分布式部署环境中来进行选主,在某客户现场突然发生文件句柄泄露,在打印某些错误日志后,几个小时内没有日志打印,然后某个协程突然报无可用的文件句柄。 分析 经过代码和日志分析,组件正常每分钟会打印所有部署节点的日志信息,没有打印日志说明定时器处理逻辑for... 阅读全文
posted @ 2021-04-09 11:59 luoming1224 阅读(939) 评论(0) 推荐(0) 编辑