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

天翼云开发者社区
• 阅读 0

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

1.问题背景

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

2.问题原因

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

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

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

3.优化方案

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

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

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

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

点赞
收藏
评论区
推荐文章
浅谈企业应用中台的构建
本文分享自天翼云开发者社区《》,作者:JinnyPeng引言:随着数字化时代的到来,企业面临着日益复杂的业务环境和庞大的信息化需求。在过去,企业通常采用分散的应用系统来满足各个部门和业务线的需求,导致信息孤岛、数据孤岛的问题日益突出。为了打破这种局面,提升
HBase Sync功能导致HBase入库性能下降
本文分享自天翼云开发者社区《》,作者:5m问题背景与现象HBase入库慢,regionserver日志中大量打印slowsync。原因分析1.对比正常写入时间段监控,检查HBase服务整体CPU、内存以及NameNodeRPC在异常时间段是否增加;2.检查
HDFS目录配额(quota)不足导致写文件失败
本文分享自天翼云开发者社区《》,作者:5m问题背景与现象给某目录设置quota后,往目录中写文件失败,出现如下问题“TheDiskSpacequotaof/tmp/tquota2isexceeded”。omm@18939150115client$hdf
kubectl logs 报错问题解决
本文分享自天翼云开发者社区《》,作者:SummerSnow目录1.环境介绍2.问题现象3.问题原因4.问题解决环境介绍生产环境部署了一个包含100多台节点、版本为1.19的高可用k8s集群,详细信息如下:root@xxkubectlversionC
kubelet报listen tcp [::1]:0: bind问题解决
本文分享自天翼云开发者社区《》,作者:SummerSnow目录1.环境目录2.问题现象3.问题定位4.问题解决环境介绍k8s集群环境如下:root@k8smaster$kubectlversionClientVersion:version.Info
一种CDN动态加速首次访问加速方法
本文分享自天翼云开发者社区《》.作者:蒋辉具体方案如下:1.对于全站加速,节点内部的探测采用的非请求触发式探测(已实现),在首次访问时,使用配置的顶层父方案作为回源节点回源,具体如下:masterparentarea:"area.parent1st.ctc
一种智能调度分布式路径计算解决方案
本文分享自天翼云开发者社区《》.作者:蒋辉背景技术传统的CDN动态加载智能路由系统对用户动态请求,主要通过探测服务器主动发起周期性的探测请求,探测CDN中转节点和源站的可用性及网络性能,根据探测结果选择最优的回源链路;然而,在获取到探测结果后,为了减少探测
利用排列组合法实现TOPN路径计算
本文分享自天翼云开发者社区《》.作者:罗斌1背景在进行TOPN选路性能摸底时,发现其在100100节点级别以上的两两互相探测情况下的选路性能不太理想,整体压测后分析发现,选路算法部分是整个处理流程的瓶颈点。对此,我分析了下目前计算TOPN路径所使用的深度优
使用CDN后如何更新同名文件
本文分享自天翼云开发者社区《》.作者:潘婧使用CDN后,源站的文件将在CDN节点上缓存。此时如果有同名文件需要更新,可通过如下两种方式:一、被动更新被动更新机制指的是通过设置CDN缓存过期时间,实现CDN节点上的文件定期与源站文件进行比对,从而实现更新。缓
nginx解决进程内存占用翻倍
本文分享自天翼云开发者社区《》.作者:zn1.问题某天,线上生成环境发现一个问题:某一台机器线上的nginx进程占用的内存是其他机器的2倍,尝试对nginx进行reload后,并没有恢复内存占用翻倍机器:正常机器:2.分析1.每次reload或者启动时wo
天翼云开发者社区
天翼云开发者社区
Lv1
天翼云是中国电信倾力打造的云服务品牌,致力于成为领先的云计算服务提供商。提供云主机、CDN、云电脑、大数据及AI等全线产品和场景化解决方案。
文章
987
粉丝
16
获赞
40