GDB多线程调试:Redis的IO多线程

Redis采用的网络模型是单线程的Reactor网络模型,异步处理,因为性能很高。
在这里插入图片描述

Reactor先从客户端获取请求,然后dispatch给具体的执行的线程。处理的流程即为read->decode->compute->encode->send。

而Redis的IO多线程的处理时,会构造一个消息队列,上述处理的流程中,只有compute为单线程串行执行,其余过程分发到不同的线程中执行。这意味着命令解析、执行、响应生成等仍然是在主线程中处理的,但是将客户端请求的读取和响应的写入操作可以在多个 I/O 线程中进行。

启用方式:
  • 在 Redis 配置中设置 io-threads-do-readsyes 并指定 I/O 线程的数量(通过 io-threads 选项)

  • 修改分发策略,int item_id = 0; 改为 int item_id = 1; 线程分发时先分发给IO线程而不是主线程中处理。

GDB调试步骤:

  • 确保可执行程序携带调试信息 -g -ggdb

  • 启动调试器: gdb可执行程序 gdb src/redis-server

  • 设置断点 break

    • 收集读任务:break networking.c : 2534

    在这里插入图片描述

    • 分发读任务:break networking.c : 4233

    在这里插入图片描述

    • 处理读任务:break processCommand
    • 收集写任务:break clientInstallWriteHandler
    • 处理写任务:break writeToClient
  • 运行程序:run redis.conf

    • 每一步中列出所有线程:info threads
    • 其中redis-server是主线程
    • io_thd1-3是io线程
  • 控制执行或者打印变量值或者查看调用堆栈

    • next n
    • step s
    • continue c
    • print
    • backtrace bt

最后给大家推荐一个LinuxC/C++高级架构系统教程的学习资源与课程,可以帮助你有方向、更细致地学习C/C++后端开发,具体内容请见 https://xxetb.xetslk.com/s/1o04uB

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

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

相关文章

【C++】:拷贝构造函数和赋值运算符重载

目录 一,拷贝构造函数1. 什么是拷贝构造函数2. 拷贝构造函数的特性3. 实践总结 二,赋值运算符重载2.1 运算符重载2.2 赋值运算符重载 一,拷贝构造函数 1. 什么是拷贝构造函数 拷贝构造函数是特殊的构造函数。是用一个已经存在的对象&#x…

SAP采购订单-条件类型-配置开发步骤

由于采购业务变更,需要创建新的价格类型,并添加新的计算逻辑计算。首先在例程(VOFM)中创建计算逻辑,然后在系统配置(SPRO)中找到配置点,创建新的条件类型‘ZMM00’,创建定价过程‘ZM…

SpringCloud系列(16)--将服务提供者Provider注册进Zookeeper

前言:在上一章节中我们说明了一些关于Eureka自我保护模式,而且自上一章节起关于Eureka的知识已经讲的差不多了,不过因为Eureka已经停更了,为了安全考虑,我们要用还在更新维护的注册中心来取代Eureka,而本章…

Flink面试(2)

Flink面试(1)-CSDN博客 9. Flink 状态如何存储? 在 Flink 中,状态存储 被叫做 StateBackend,它具备两种能力: 在计算过程中提供访问 State 能力,开发者在编写业务逻辑中能够使用 StateBacken…

网络数据包嗅探器工具

组织的网络非常庞大,包含服务器、交换机、路由器和接入点等众多节点,由于许多资源和流量不断通过这些节点,因此很难确定大量流量是真实的还是安全攻击的迹象,了解和了解组织的网络流量至关重要,一个有用的资源是网络数…

MySQL--mysql的安装(压缩包安装保姆级教程)

官网下载:www.mysql.com MySQL :: Download MySQL Community Server (Archived Versions) 1.MySQL下载流程: 第一步:点击download, 下滑找到MySQL community(gpl)Downloads>> 第二步:点…

通俗易懂,十分钟让你了解并上手 Docker

通俗易懂,十分钟让你了解并上手 Docker 一、Docker 能拿来解决什么问题二、Docker 的概念与模型1. 容器化技术2. 镜像的概念3. Docker与虚拟机 三. Docker的使用1. 环境安装2. 制作镜像3. 镜像管理(1) 图形界面(2) 命令…

Coursera: An Introduction to American Law 学习笔记 Week 03: Property Law

An Introduction to American Law 本文是 https://www.coursera.org/programs/career-training-for-nevadans-k7yhc/learn/american-law 这门课的学习笔记。 文章目录 An Introduction to American LawInstructors Week 03: Property LawKey Property Law TermsSupplemental Re…

多功能气象传感器解析

TH-WQX5多功能气象传感器在监测要素上越来越丰富。除了传统的温度、湿度、风速、风向等基本气象要素外,现代的多功能气象传感器还能够监测降雨量、大气压力、光照强度、紫外线强度、土壤温湿度等多种参数。这些数据的获取,使得农业生产者能够更全面地了解…

4款值得推荐的AI辅助编程工具(支持C#语言)

前言 在这个AI迅速发展的阶段,涌现出了一大批好用的AI辅助编程工具。AI辅助编程工具能够提高开发效率、改善代码质量、降低bug率,是现代软件开发过程中的重要助手。今天大姚给大家分享4款AI辅助编程工具(并且都支持C#语言)&#x…

ChromaDB教程

使用 Chroma DB,管理文本文档、将文本嵌入以及进行相似度搜索。 随着大型语言模型 (LLM) 及其应用的兴起,我们看到向量数据库越来越受欢迎。这是因为使用 LLM 需要一种与传统机器学习模型不同的方法。 LLM 的核心支持技术之一是…

Linux 文件/目录管理(头歌实训)

目录 任务描述 相关知识 Linux 创建文件 Linux 删除文件 编程要求 测试说明 任务描述 相关知识 Linux 创建目录 Linux 删除目录 编程要求 测试说明 任务描述 相关知识 Linux 拷贝文件 Linux 重命名文件 编程要求 测试说明 任务描述 相关知识 Linux 拷贝目…

初入数据库

SQL:操作关系型数据库的编程语言,定义了一套操作关系型数据库的统一标准。 DDL(Data Definition Language)数据定义语言 数据库 show databases;create database db01;use db01;select database(); 显示当前使用的数据库drop d…

Springboot的Test单元测试操作

Springboot的Test单元测试操作 简单总结需要操作的步骤 1&#xff0c;导入依赖 2&#xff0c;创建目录&#xff08;目录和启动类的目录保持一致&#xff09; 3&#xff0c;添加注解 4&#xff0c;写方法测试 1&#xff0c;导入依赖 <dependency><groupId>org.spri…

(八)小案例银行家应用程序-排序-数组排序

排序一直有很多的算法&#xff0c;今天我们仅仅来说JavaScript内置的排序方法 ● 字符串 const owners [Jonas, Zach, Adam, Martha]; console.log(owners.sort()); console.log(owners);但是注意&#xff0c;这个方法会改变原有的数组&#xff1b; ● 我们在试试数字 cons…

使用excel文件生成sql脚本

目录 1、excel文件脚本变量2、公式示例 前言&#xff1a;在系统使用初期有一些基础数据需要从excel中导入到数据库中&#xff0c;直接导入的话可能有些字段用不上&#xff0c;所以就弄一个excel生成sql的导入脚本&#xff0c;这样可以将需要的数据填到指定的列即可生成sql。 1、…

探索AI大模型在央国企的落地实践|爱分析活动

在这个人工智能技术迅猛发展的时代&#xff0c;AI大模型在央国企的落地实践正成为推动数字化转型和智能化升级的重要引擎。为了深入探讨AI大模型在央国企的应用场景、技术挑战与落地路径&#xff0c;爱分析邀请到一家头部互联网公司作为本次闭门研讨会的联合主办方&#xff0c;…

美国网站服务器解决方案

在当今互联网时代&#xff0c;网站是企业宣传、营销和销售的最好方式&#xff0c;因此&#xff0c;选择一个适合自己企业的网站服务器解决方案很重要。美国作为全球网络基础设施最发达的国家之一&#xff0c;其网站服务器解决方案具有以下特点&#xff1a; 一、安全性高 作为全…

IDEA使用中, 设置平展软件包。使用IDEA遇到的问题:src里为什么创建包为什么不在包里面

使用IDEA遇到的问题&#xff1a;src里为什么创建包为什么不在包里面 如下图所示 &#xff1a; 点击齿轮设置 如何搞回来&#xff1f; 看下面的Flatten Packages&#xff08;平展软件包&#xff09;取消掉。

【算法刷题 | 回溯思想 07】4.18(全排列、全排列 ||)

文章目录 11.全排列11.1题目11.2解法&#xff1a;回溯11.2.1回溯思路&#xff08;1&#xff09;函数返回值以及参数&#xff08;2&#xff09;函数返回值&#xff08;3&#xff09;遍历过程 11.2.2代码实现 12.全排列 ||12.1题目12.2解法&#xff1a;回溯12.2.1回溯思路12.2.3代…