一种高并发下的自旋锁优化方案

本文分享自天翼云开发者社区《一种高并发下的自旋锁优化方案》.作者:星空赶路者

1.问题背景

CDN线上有一些节点机器cpu存在突刺,都是在晚上业务高峰期才出现。该节点存在大量的小文件访问,使用了固态硬盘。经过线下压测模拟复现了线上的问题现象。

2.问题原因

通过工具发现cpu突刺时的堆栈信息在对一张共享内存哈希表进行非常高频的更新与访问。主要原因为:1.需要更新当前主机url的访问量信息。2需要提供查询接口当前主机url的访问信息。

由于存在对临界资源的更新和访问,需要对读写加锁。目前锁为自旋锁,自旋锁在加锁不成功时,一直尝试不会释放cpu资源。当临界区操作很短暂时,自旋锁处理的性能就非常高。但如果很多个进程(80个nginx worker进程)同时竞争一把自旋锁时,就会导致锁冲突加剧,cpu突刺明显。由于不能及时释放cpu计算资源,对主机上的其他进程也会产生影响。

3.优化方案

为了避免n多个进程竞争同一把自旋锁,需要对锁进行分级管理:分为外层锁和内层锁。外层锁只有有限的N把,内层锁只有一把。

进程在读写共享内存哈希表之前,根据一定的哈希算法,哈希到某个外层锁加锁,只有加锁成功后,才有资格对内层锁加锁。

如果外层锁加锁失败,则调度后续其他请求继续处理,将本次请求放到调度队列最后。最终竞争内存自旋锁的只有有限的几个进程。这样就大大降低了冲突概率。

相关推荐
姚不倒2 天前
从 A 记录到 CDN 切换:我的 DNS 认知跃迁之路
运维·cdn·dns
字节跳动视频云技术团队6 天前
AI Agent 会自己选 CDN 了:当网站访问者从 “人” 扩展到 “AI”,内容分发已升级
人工智能·cdn
Linsk6 天前
2026年了,请停止相信“公共 CDN 能提升性能”
前端·jquery·cdn
锐速网络1 个月前
游戏加速、DNS加速、CDN网络加速三者选型指南
cdn·网络优化·网络运维·游戏加速·dns加速·运维选型·长连接加速
锐速网络1 个月前
CDN视频加速集群部署与性能调优
cdn·网络优化·视频加速·流媒体加速·直播cdn·cdn集群部署·锐速安全
mCell1 个月前
别急着骂运营商,你家路由器里可能藏着一台 PCDN 盒子
前端·http·cdn
云安全干货局1 个月前
怎么选择靠谱的CDN服务品牌?主流品牌性能对比及加速效果解析
cdn·安全加速·云加速·业务加速·edge scdn
SEO_juper2 个月前
CDN 地域节点优化:匹配 GEO 信号,提升加载速度
服务器·ai·php·seo·cdn·geo·谷歌优化
Love Song残响2 个月前
PowerSetting下载慢?CDN加速 + 离线包分发综合优化方案
cdn
隔窗听雨眠2 个月前
从DNS解析到分布式存储的技术解构
分布式·网关·cdn·dns·socks