searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

一种解决弱盘加载突刺的方法

2024-11-12 09:24:51
1
0

背景

线上有些机器根盘是HDD,性能比较差,有些客户会同时下发1000多个域名的IP黑白名单文件,文件并发大的时候装载程序发现有1000多个文件时间戳有变更,直接加载到共享内存时导致根盘IO突刺,影响了线上业务。

 

原因分析

通过原因分析发现,装载程序通过mmap函数调用,将ip黑白名单写入共享内存中,然后由操作系统自动将共享内存中的数据回写到磁盘文件上。操作系统回写的过程不可控,如果加载的ip黑白名单比较多文件比较大,很容易导致机械盘io升高。进而导致访问受到影响。

 

解决方法

先将ip黑白名单写入到内存中,然后对内存切割成多个分片,每个分片大小为2K。然后将每个分片的内容顺序写入到磁盘文件上。每写完一个分片,就暂停0.1毫秒,这样就可以控制写入磁盘文件的节奏比较均匀,以及控制最大写入速度不会超过20M/s.

这样就从应用层上控制了写入磁盘io的速度上限,理论上不会再出现集中写入导致的突刺。

流程图变更如下:

 

效果观察

新的方式写入后再也没有出现过硬盘突刺现象。

0条评论
作者已关闭评论
星空赶路者
3文章数
0粉丝数
星空赶路者
3 文章 | 0 粉丝
星空赶路者
3文章数
0粉丝数
星空赶路者
3 文章 | 0 粉丝
原创

一种解决弱盘加载突刺的方法

2024-11-12 09:24:51
1
0

背景

线上有些机器根盘是HDD,性能比较差,有些客户会同时下发1000多个域名的IP黑白名单文件,文件并发大的时候装载程序发现有1000多个文件时间戳有变更,直接加载到共享内存时导致根盘IO突刺,影响了线上业务。

 

原因分析

通过原因分析发现,装载程序通过mmap函数调用,将ip黑白名单写入共享内存中,然后由操作系统自动将共享内存中的数据回写到磁盘文件上。操作系统回写的过程不可控,如果加载的ip黑白名单比较多文件比较大,很容易导致机械盘io升高。进而导致访问受到影响。

 

解决方法

先将ip黑白名单写入到内存中,然后对内存切割成多个分片,每个分片大小为2K。然后将每个分片的内容顺序写入到磁盘文件上。每写完一个分片,就暂停0.1毫秒,这样就可以控制写入磁盘文件的节奏比较均匀,以及控制最大写入速度不会超过20M/s.

这样就从应用层上控制了写入磁盘io的速度上限,理论上不会再出现集中写入导致的突刺。

流程图变更如下:

 

效果观察

新的方式写入后再也没有出现过硬盘突刺现象。

文章来自个人专栏
漫谈设计
3 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0