当前位置: 首页 > news >正文

网站建设客源开发网络销售平台上市公司有哪些

网站建设客源开发,网络销售平台上市公司有哪些,织梦网站怎么做伪静态,宁波咨询网站设计对于redis出现大key的情况,可以通过以下几种方式来解决: 1.分布式存储:将大key拆分成多个小的key,分别存储在不同的节点上。 2.数据过期:对于大key中不经常使用的数据,可以使用redis自带的过期特性&#xf…

对于redis出现大key的情况,可以通过以下几种方式来解决:

1.分布式存储:将大key拆分成多个小的key,分别存储在不同的节点上。

2.数据过期:对于大key中不经常使用的数据,可以使用redis自带的过期特性,将其自动删除,降低内存占用。

3.压缩数据:对于大key中的数据进行压缩,减小其占用的内存空间。

4.内存分片:将大key分片存储在不同的内存块中,从而降低其占用的内存空间

Redis 大 Key 对持久化有什么影响?

大 Key 对 AOF 日志的影响:

Redis 提供了 3 种 AOF 日志写回硬盘的策略,分别是:
1.Always,它的意思是每次写操作命令执行完后,同步将 AOF 日志数据写回硬盘;
2.Everysec,它的意思是每次写操作命令执行完后,先将命令写入到 AOF 文件的内核缓冲区,然后每隔一秒将缓冲区里的内容写回到硬盘;
3.No,就是每次写操作命令执行完后,先将命令写入到 AOF 文件的内核缓冲区,再由操作系统决定何时将缓冲区内容写回硬盘。

这三种策略只是在控制 fsync() 函数的调用时机

  • Always 策略就是每次写入 AOF 文件数据后,就执行 fsync() 函数;
    Everysec 策略就会创建一个异步任务来执行 fsync() 函数;
    No 策略就是永不执行 fsync() 函数;

1.当使用 Always 策略的时候,如果写入是一个大 Key,主线程在执行 fsync() 函数的时候,阻塞的时间会比较久,因为当写入的数据量很大的时候,数据同步到硬盘这个过程是很耗时的。
2.当使用 Everysec 策略的时候,由于是异步执行 fsync() 函数,所以大 Key 持久化的过程(数据同步磁盘)不会影响主线程。
3.当使用 No 策略的时候,由于永不执行 fsync() 函数,所以大 Key 持久化的过程不会影响主线程。

大 Key 对 AOF 重写和 RDB 的影响

当 AOF 日志写入了很多的大 Key,AOF 日志文件的大小会很大,那么很快就会触发 AOF 重写机制

AOF 重写机制和 RDB 快照(bgsave 命令)的过程,都会分别通过 fork() 函数创建一个子进程来处理任务。

1.在通过 fork() 函数创建子进程的时候,内核会把父进程的页表复制一份给子进程,如果页表很大,复制过程会很耗时,在执行 fork 函数的时候就会发生阻塞现象。fork 函数是由 Redis 主线程调用的,如果 fork 函数发生阻塞,那么就会阻塞 Redis 主线程。由于 Redis 执行命令是在主线程处理的,所以当 Redis 主线程发生阻塞,就无法处理后续客户端发来的命令。

2.如果创建完子进程后,父进程对共享内存中的大 Key 进行了修改,那么内核就会发生写时复制,会把物理内存复制一份,由于大 Key 占用的物理内存是比较大的,那么在复制物理内存这一过程中,也是比较耗时的,于是父进程(主线程)就会发生阻塞

总结

当 AOF 写回策略配置了 Always 策略,如果写入是一个大 Key,主线程在执行 fsync() 函数的时候,阻塞的时间会比较久,因为当写入的数据量很大的时候,数据同步到硬盘这个过程是很耗时的。

AOF 重写机制和 RDB 快照(bgsave 命令)的过程,都会分别通过 fork() 函数创建一个子进程来处理任务。会有两个阶段会导致阻塞父进程(主线程):

1.创建子进程的途中,由于要复制父进程的页表等数据结构,阻塞的时间跟页表的大小有关,页表越大,阻塞的时间也越长;
2.创建完子进程后,如果父进程修改了共享数据中的大 Key,就会发生写时复制,这期间会拷贝物理内存,由于大 Key 占用的物理内存会很大,那么在复制物理内存这一过程,就会比较耗时,所以有可能会阻塞父进程。

大 key 除了会影响持久化之外,还会有以下的影响:

1.客户端超时阻塞。由于 Redis 执行命令是单线程处理,然后在操作大 key 时会比较耗时,那么就会阻塞 Redis,从客户端这一视角看,就是很久很久都没有响应。

2.引发网络阻塞。每次获取大 key 产生的网络流量较大,如果一个 key 的大小是 1 MB,每秒访问量为 1000,那么每秒会产生 1000MB 的流量,这对于普通千兆网卡的服务器来说是灾难性的。

3.阻塞工作线程。如果使用 del 删除大 key 时,会阻塞工作线程,这样就没办法处理后续的命令。

4.内存分布不均。集群模型在 slot 分片均匀情况下,会出现数据和查询倾斜情况,部分有大 key 的 Redis 节点占用内存多,QPS 也会比较大。

如何避免大 Key 呢?

在设计阶段,就把大 key 拆分成一个一个小 key。
或者,定时检查 Redis 是否存在大 key ,如果该大 key 是可以删除的,不要使用 DEL 命令删除,因为该命令删除过程会阻塞主线程,而是用 unlink 命令(Redis 4.0+)删除大 key,因为该命令的删除过程是异步的,不会阻塞主线程。

http://www.ritt.cn/news/23647.html

相关文章:

  • 北京网站优化团队女排联赛最新排行榜
  • 南宁网站建设-中国互联专业全网优化
  • 网站后台登陆验证码无法显示看网站时的关键词
  • 做网站建设挣钱吗百度官网认证多少钱
  • php网站开发路线广告牌
  • 湖南党政建设网站自助友链平台
  • 织梦网站织梦做英文版的服装店营销策划方案
  • 做瞹瞹瞹视频免费网站qq推广平台
  • 没有网站流量怎么办网站优化招商
  • 佛山做网站公司哪家好刚刚济南发通知
  • 自己怎么给网站做优化百度一下网页首页
  • 网站备案申请永久免费wap自助建站
  • 做导航网站怎么赚钱公司管理培训课程大全
  • 十堰门户网站建设武汉竞价托管公司
  • android电影网站开发seo快排技术教程
  • 俄语搜索网站潍坊在线制作网站
  • 电子商务网站建设规划书的内容如何自己创建网址
  • 全能网站建设教程北京百度推广官网首页
  • 东莞网站建设推广公司武汉seo工厂
  • 广东住房和建设局网站创建网站的基本步骤
  • 广汉做网站建网站找哪个平台好呢
  • 合肥市城乡建设局东莞网站推广行者seo08
  • 企业小程序开发报价seo在线排名优化
  • 网站建设分为几个时期百度指数的需求指数
  • 化妆品商城网站建设app推广接单网
  • 龙华做网站 熊掌号by72777最新域名查询
  • 校园淘宝店网站开发百度极速版
  • wordpress 中文插件大全惠州seo排名外包
  • 网站多语言 设计开发app需要多少资金
  • 开滦建设集团网站公司营销策划方案