redis在实践中的一些常见问题以及优化思路(包含linux内核参数优化)

news2024/11/25 2:35:48

文章目录

  • redis在实践中的一些常见问题以及优化思路(包含linux内核参数优化)
    • fork耗时导致高并发请求延时
    • AOF的阻塞问题
    • 主从复制延迟问题
    • 主从复制风暴问题
    • vm.overcommit_memory
    • swapiness
    • 最大打开文件句柄
    • tcp backlog


redis在实践中的一些常见问题以及优化思路(包含linux内核参数优化)

fork耗时导致高并发请求延时

  • 产生原因

在 生成 rdb 文件和 aof 重写的时候,主进程 会 fork 子进程,而 fork 的时候,子进程需要拷贝父进程的空间内存页表,会耗费一定的时间。

一般来说,如果父进程内存有 1 个 G 的数据,那 fork 可能会耗费在 20ms 左右,如果是 10G~30G,那么就会耗费 20 * 10,甚至20 * 30,也就是几百毫秒的时间(info stats 中的 latest_fork_usec,可以看到最近一次 fork 的时长)。

在这里插入图片描述

redis 单机 qps 一般在几万,fork 可能一下子就会拖慢几万条操作的请求时长,从几毫秒变成 1 秒。

  • 优化思路

fork 耗时跟 redis 主进程的内存有关系,一般控制 redis 的内存在 10GB 以内。

AOF的阻塞问题

  • 产生原因

redis 将数据写入 AOF 缓冲区,单独开一个线程做 fsync 操作,每秒一次。另外,redis 主线程会检查两次 fsync 的时间,如果距离上次 fsync 时间超过了 2 秒,那么写请求就会阻塞,整个 redis 就被拖慢,最多会丢失 2 秒的数据。

  • 优化思路

优化硬盘写入速度,建议采用 SSD,不要用普通的机械硬盘。

主从复制延迟问题

主从复制可能会超时严重,这个时候需要良好的监控和报警机制。在 info replication 中,可以看到 master 和 slave 复制的 offset,写一个脚本监控对应的延迟量,如果延迟过多,那么就进行报警。

在这里插入图片描述

主从复制风暴问题

  • 产生原因

如果同时让多个 slave 从 master 去执行全量复制,一份大的 rdb 文件同时发送到多个 slave,会导致网络带宽被严重占用。

  • 优化思路

如果一个 master 真的要挂载多个 slave,那尽量用树状结构,不要用星型结构。

vm.overcommit_memory

  • 产生原因

0:检查有没有足够内存,没有的话申请内存失败
1:允许使用内存直到用完为止
2:内存地址空间不能超过 swap + 50%

如果是 0 的话,可能导致类似 fork 等操作执行失败,申请不到足够的内存空间。

  • 解决思路
cat /proc/sys/vm/overcommit_memory
echo "vm.overcommit_memory=1" >> /etc/sysctl.conf
sysctl vm.overcommit_memory=1

redis 实例启动日志中能看到有关 vm.overcommit_memory 的提示内容

在这里插入图片描述

swapiness

  • 产生原因

使用命令 cat /proc/version 查看 linux 内核版本

如果 linux 内核版本 <3.5,那么 swapiness 设置为 0,表明系统宁愿 swap 也不会 oom killer(杀掉进程);
如果 linux 内核版本 >=3.5,那么 swapiness 设置为 1,表明系统宁愿 swap 也不会 oom killer。
  • 解决思路

保证 redis 不会被杀掉

echo 0 > /proc/sys/vm/swappiness
echo vm.swapiness=0 >> /etc/sysctl.conf

最大打开文件句柄

redis 实例启动日志中能看到有关最大打开文件句柄的提示内容

在这里插入图片描述

通过命令 ulimit -n 10032 10032 可按提示要求设置最大打开文件句柄。

tcp backlog

redis 实例启动日志中能看到有关 tcp backlog 的提示内容

在这里插入图片描述

通过命令 echo 511 > /proc/sys/net/core/somaxconn 可按提示要求设置 tcp backlog。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/53222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据库高级】Mysql窗口函数的使用和练习

Mysql窗口函数&#x1f33e;Mysql窗口函数&#x1f54a;️一、什么是窗口函数&#x1f343;1、怎么理解窗口?&#x1f343;2、什么是窗口函数&#x1f375;1. 基本语法&#xff1a;&#x1f375;2. 窗口函数多用在什么场景&#xff1f;主要有以下两类&#xff1a;&#x1f375…

【AAAI2023】视觉辅助的常识知识获取Visually Grounded Commonsense Knowledge Acquisition 个人学习笔记

视觉辅助的常识知识获取 摘要&#xff1a;大规模的常识知识库为广泛的AI应用提供了能力&#xff0c;其中常识知识的自动提取extraction of commonsense knowledge (CKE)是一个基本和具有挑战性的问题。文本中的CKE因其固有的稀疏性和文本中常识的报道偏差reporting bias而闻名…

Windows OpenGL ES 图像色调

目录 一.OpenGL ES 图像色调 1.原始图片2.效果演示 二.OpenGL ES 图像色调源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL E…

Java+JSP+MySQL基于SSM的在线投票系统-计算机毕业设计

项目介绍 随着社会的发展&#xff0c;人们在处理一些问题的时候不同意见越来越多&#xff0c;这源于人们对思想的解放和对社会的认识。所以在处理同一问题上&#xff0c;为了征求不同人的意见在线投票系统诞生了。 基于SSM的在线投票系统以钦州学院为背景&#xff0c;运用在校…

CSS详解

文章目录1. CSS快速入门2. 四种CSS导入方式3. 三种基本选择器4. 层次选择器5. 结构伪类选择器5. 属性选择器6. CSS样式HTML(结构)CSS(表现)JavaScript(交互)1. CSS快速入门 <style>可以编写css代码&#xff0c;每一个声明&#xff0c;最好使用分号; <!DOCTYPE html&…

【JavaWeb】Servlet系列 --- HttpServletRequest接口详解(接口方法要记住!!!)

HttpServletRequest接口一、HttpServletRequest接口中有哪些常用的方法&#xff1f;思考&#xff1a;如果是前端的form表单提交了数据之后&#xff0c;你准备怎么存储这些数据&#xff0c;你准备采用什么样的数据结构去存储这些数据呢&#xff1f;二、request接口中四个非常重要…

FlutterAcivity 包已导入 但是仍然爆红

FlutterAcivity 包已导入 但是仍然爆红 这种情况就比较广泛了 我说一下我遇到的这种情况 上一篇 FlutterActivity找不到http://t.csdn.cn/HvgtI 1.大家可以看到我这个FlutterActivity包已导入 但是依然报错 2.可以清楚的看到我这个提示是 LifecycleOwner 找不到我们点Flutter…

智慧工地安全施工实时监测系统解决方案

背景介绍 随着经济的发展&#xff0c;混凝土搅拌车数量有很大增长&#xff0c;但是其超速、超载等原因造成了很多交通事故&#xff0c;给交通安全带来隐患&#xff0c;也给企业造成损失&#xff0c;严重影响了和谐城市建设的进程。 中国电子科技集团第52研究所经过多年研发与…

React子组件没有随父组件更新问题的解决

前言&#xff1a;今天遇到一个小需求&#xff0c;本来只是修改文案的&#xff0c;结果问题卡了很久很久&#xff0c;想想还是太菜了 问题描述&#xff1a; 根据changePlaceHolder修改AInput的placeholder的默认值&#xff0c;AInput是封装的antd的input组件&#xff0c;期间发…

图片一键调整工具V1.0-免费版

一、工具介绍 这是博主自己开发的图片一键调整工具V1.0,它可以调整图片宽度和高度、压缩图片大小、改变图片背景、转换图片格式和图片透明化&#xff0c;都是很常用的功能。操作起来简单方便。 二、工具操作 1.调整图片背景 首先&#xff0c;把该工具软件和图片放到同一文件…

Linux基础知识与实操-篇二:初识Linux目录管理与操作

文章目录文件与目录管理相对路径与绝对路径目录相关操作查阅文件相关操作文件预设权限搜索与文件文件的搜索基本权限与指令最后在经过上篇 篇一:初识Linux文件权限与配置 后&#xff0c;我们已经基本熟悉并使用了Linux关于文件管理相关的内容&#xff0c;本篇则继续从文件深入…

CrossOver2023虚拟机软件安装双系统教程

您喜欢切换Windows系统吗&#xff1f;喜欢&#xff1f;好吧&#xff0c;您随意。对于其他人而言&#xff0c;想要不依赖于笨重的 Windows 模拟器就能在您的 Mac 系统上运行微软的应用程序&#xff0c;CrossOver是最简单的方式。讲真&#xff0c;您试过模拟器了吗&#xff1f;您…

如何使用Python访问和查询Google BigQuery数据

要使用Python查询Google BigQuery数据&#xff0c;需要将Python客户端连接到BigQuery实例。 将会云客户端库用于Google BigQuery API. 假设您已经设置了Python开发环境。(支持3.7-3.11版本)要安装该库&#xff0c;请在命令行中运行以下命令&#xff1a; pip install --upgrade…

【国际化Intl】Flutter 国际化多语言实践

目标&#xff1a;实现flutter国际化 提示&#xff1a;这里参考一下几个链接 例如&#xff1a; https://github.com/ThinkerWing/language https://juejin.cn/post/6844903823119482888 这篇也很详细&#xff0c;还有包括兼容中文的繁体简体… 可以看看 feat/use-Flutter-Int…

python函数进阶

一、函数多返回值 Q&#xff1a;如果一个函数内两个return&#xff0c;程序如何执行&#xff1f; A&#xff1a;只执行了第一个return&#xff0c;原因是因为return可以退出当前函数&#xff0c;导致return下方的代码不执行 但是如果一个函数需要有多个返回值&#xff0c;该如…

华为云数据库GaussDB(for Cassandra)揭秘:高性能低成本是什么样的体验?

在我们的日常理念中&#xff0c;追求性价比是最为常见的&#xff0c;但是你知道购买低配置还能享受高性能、低延时、超低价的数据库有哪些吗&#xff1f;今天我们就用数据说话&#xff0c;带你深入了解GaussDB(for Cassandra)挑战高性价比&#xff01; 众所周知&#xff0c;有…

Android开发者们想想:到底是市场饱和?还是你们技术饱和?

根据我的不客观数据体验来看&#xff0c;最饱和的是iOS&#xff0c;同样发布一个职位iOS是其他技术岗位10倍的投递量。当然Android作为一个已经市场化将近十几年的技术门类&#xff0c;它必然早已经是成熟常态。这样的技术行业都不再会有爆炸式的增长。连同Android硬件、手机、…

Go学习之路:方法和接口(DAY 3)

文章目录前引方法和接口1.1、方法/声明方法1.2、方法/捆绑其他类型1.3、方法/方法常用指针传递1.4、方法/普通函数指针传递和方法指针传递区别2.1、接口/方法签名集合2.2、接口/接口断言2.3、接口/switch case练习题、接口/stringer实现字符串打印2.4、接口/错误前引 昨天终于算…

机器学习5数据归一化Feature Scaling

文章目录一、为什么要数据归一化&#xff1f;二、解决方案数据归一化&#xff0c;解决方案1&#xff1a;最值归一化normalization&#xff1a;解决方案2&#xff1a;均值方差归一化standardization;三、最值归一化处理normalization四、均值方差归一化Standardization一、为什么…

ICMP协议(3层网络层协议:IP、ARP、ICMP)

1、ICMP协议端口号&#xff1f; 没有端口号&#xff0c;向TCP/UDP这些都是没有端口号只有协议号&#xff0c;只有应用层才有端口号。 2、ICMP协议是干什么的&#xff1f; 网络探测与回馈机制 1&#xff09;网络探测 2&#xff09;路由跟踪&#xff0c;windows命令&#xff1a;…