专栏名称: 腾讯技术工程
腾讯技术工程事业群官方微信公众号。腾讯前沿科技技术、产品、行业信息交流发布平台。
今天看啥  ›  专栏  ›  腾讯技术工程

多线程读写锁产生死锁的故障解决方案

腾讯技术工程  · 公众号  ·  · 2025-01-06 18:02
    

文章预览

作者:morphis 多线程环境下,读写锁是一种常用的同步原语,适用于多读者-多写者的经典问题;合理的使用可以在保证数据一致性的前提下,大幅提升读性能,但不合理的使用可能会导致死锁。本文从一次协程泄露问题入手,分析golang读写锁可能产生死锁的场景,希望读者可以避坑。 一、故障背景 近期线上某个trpc-go服务一直在OOM,据以往查障经验,golang服务发生内存持续上涨大概率是由两个原因导致: 请求量过大,服务处理不过来,造成协程积压,或者资源积压; 协程泄露,由于未正确关闭、或者协程阻塞等原因,导致协程积压。 123平台容器监控如下: 二、排查思路 1. 检查请求量级 第一时间排查了一下服务的请求量和CPU/内存情况,发现 请求量并未上涨 ,内存上涨的同时,CPU并未线性相关上涨,但是 协程数一直在上涨 ;这里就排除了请求积 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览