首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏运维录

    Redis性能分析

    前言 redis性能分析常见的有以下几个方面: redis slowlog分析 SCAN,SSCAN,HSCAN和ZSCAN命令的使用方法 redis是否受到系统使用swap redis watchdog 定位延时 关于redis的延时监控框架,可参考官网资料下面我们分别从这几个方面来介绍 redis slowlog分析 慢查询设置在Redis中有两种修改配置的方法,一种是修改配置文件 slowlog-log-slower-than 0 match f* 1) "0" 2) 1) "foo" 2) "feelsgood" 3) "foobar" hscan查询hash集合的方法: redis 127.0.0.1 watchdog定位延时 注意:实验功能,请确保redis数据已备份,会对redis服务性能产生影响 Redis software watchdog #该功能只能动态启用,使用以下命令: CONFIG (integer) 207 2) 1) (integer) 1480865711 2) (integer) 217 LATENCY DOCTOR延时事件统计信息的智能分析与建议

    1.5K30发布于 2019-11-19
  • 来自专栏对线JAVA面试

    Redis 性能问题分析

    在一些网络服务的系统中,Redis性能,可能是比 MySQL 等硬盘数据库的性能更重要的课题。 或者说,应该避免哪些性能浪费呢? Redis 性能的基本面 在讨论优化之前,我们需要知道,Redis 服务本身就有一些特性,比如单线程运行。 key1' @redis.set 'key2' 'some value' end # => [1, 2] 据说,有些语言的客户端,甚至默认就使用 pipeline 来优化延时问题,比如 node_redis 考虑操作系统和硬件是否影响性能 Redis 运行的外部环境,也就是操作系统和硬件显然也会影响 Redis性能。 (2),异步完成。

    82610编辑于 2022-10-27
  • 来自专栏公众号-测试驿栈

    Redis性能分析思路

    Redis性能分析有几个大的方向。 分别是 (1)基准对比 (2)配置优化 (3)数据持久化 (4)键值优化 (5)缓存淘汰 (6)Redis集群 基准对比         在没有业务实例运行的情况下,在服务器上通过测试Redis 实例的基准性能来对比有实例运行情况下的 redis性能。 6379 --intrinsic-latency 60 2.测试时间段内Redis的最小、最大和平均时延 redis-cli -h 127.0.0.1 -p 6379 --latency-history         如果实例的延迟时间是Redis基准性能时间的1.5-2倍以上,可以认为这个Redis实例性能比较差 配置优化 linux配置优化 vm.overcommit_memory Redis是内存数据库

    61020编辑于 2022-05-10
  • 来自专栏咸鱼学Python

    硬货 | Redis 性能问题分析

    来源:rrd.me/gteAC 嘿,我是咸鱼,之前给大家推荐过关于 redis 的不少干货,这次再一起学习一下 Redis性能分析。 在一些网络服务的系统中,Redis性能,可能是比 MySQL 等硬盘数据库的性能更重要的课题。 key1' @redis.set 'key2' 'some value' end # => [1, 2] 据说,有些语言的客户端,甚至默认就使用 pipeline 来优化延时问题,比如 node_redis 考虑操作系统和硬件是否影响性能 Redis 运行的外部环境,也就是操作系统和硬件显然也会影响 Redis性能。 (2),异步完成。

    1.1K00发布于 2020-03-16
  • 来自专栏让技术和时代并行

    redis AOF性能瓶颈分析

    什么是AOF AOF是redis防止数据丢失的日志备份策略,总共有三种方式 Always 同步写回:每个写命令执行完同步地将日志写回磁盘;可靠性高,数据基本不会丢失,但同时每次命令都需要写到磁盘,性能影响比较大 ,可能会丢失1s左右的数据,但是性能得到了保证。 具体可以参考redis官网https://redis.io/topics/persistence,这里不过多赘述。 2. 2、为了把重写期间响应的写入信息也写入到新的文件中,因此也会为子进程保留一个buf,防止新写的file丢失数据。 1、开启AOF 2、没有RDB和AOF进程运行 3、auto-aof-rewrite-min-size:AOF 文件大小绝对值的最小值,默认为 64MB,具体见redis.conf。

    1.3K20编辑于 2023-03-18
  • 来自专栏技术杂货店

    Redis2】- SDS源码分析

    1 简介&基础用法Redis 中用得最多的就是字符串,在 C 语言中其实可以直接使用 char* 字符数组来实现字符串,也有很多可以直接使用得函数。 但是 Redis 并没有使用 C 语言原生的字符串,而是自己实现了一个 SDS(简单动态字符串,Simple Dynamic String) 。 Redis 的 SDS 兼容了 C 语言的字符串类型的用法,下面是 Redis 中 string 类型最常用的用法:本地:0>set hello worldOK本地:0>get helloworld本地 :0>type hellostring本地:0>strlen hello52 为什么 Redis 自实现字符串? * 2.如果n大于原来p之前指向的空间大小,那么,系统将重新为p从堆上分配一块大小为n的内存空间,同时,将原来指向空间的内容依次复制到新的内存空间上,p之前指向的空间被释放。

    35510编辑于 2024-12-07
  • 来自专栏点云PCL

    ROS2性能分析

    尽管ROS2被研究人员和爱好者广泛使用,但在实时环境中其性能仍存在一些问题。在本研究中,我们评估了ROS2性能,并了解其在实时生态系统中的相关性。 本文任务是分析ROS2节点之间的通信性能,记录了执行分析的过程和所得结果。 我们能够克隆展示该问题的存储库,并且能够以最小的更改运行测试,确认性能差异并非30倍的数量级。 为了评估rclcpp和rclpy之间的性能差异,我们创建了一个简单的测试,发布一块数据并测量这两种实现发布消息所需的时间。 结束语 根据上述研究结果,可以明显看出ROS2的C++实现在速度方面优于Python版本,然而尽管ROS2开发人员努力改进实时性能,但该框架对于时间关键和实时系统仍然不够适用。

    2K20编辑于 2023-08-21
  • 来自专栏运维

    Redis集群性能问题深度分析

    Redis集群性能问题深度分析 参考 Redis开发与运维 https://redis.io/ http://www.redis.cn/ https://github.com/antirez/redis 2,集群扩容,升级到3.2.9版本后为了均摊QPS扩容了几个节点,后续发现有2个节点内核版本比其他的高但是性能反而表现比其他差,后替换了同版本的内核。 4,建立了CacheCloud监控系统,便于分析观察问题,另外Zabbix也使用Redis模版出现大故障时会报错。 6,每个Redis集群版本升级在功能与性能上都有比较大的提升,需要持久化功能的集群后续可以使用4.0.2版本,另外如果使用虚拟化不建议使用XEN、Hyper-V等,最好使用vSphere压力测试vSphere 一,发现问题 1,慢查询 slowlog get n 默认保留128个日志执行超过10毫秒的记录,可以根据实际情况修改 2,应用报错 主要是应用邮件报超时 二,分析问题 1,内在原因 1)API或数据结构使用不合理

    2K11发布于 2018-11-14
  • 来自专栏我的独立博客

    redis georadius源码分析性能优化

    完工后对服务进行压测后发现georadius的性能比预期要差,因此我分析了georadius的源码,并对原始的实现方案进行了优化,总结成了本文。 我们生产环境使用的redis版本为4.0.13,因此本文redis源码皆为4.0.13版本的源码 redis geo原理 往redis中添加坐标的命令是GEOADD key longitude latitude [2]float64) { box := [2][2]float64{ {-180, 180}, // lng {-90, 90}, // lat } pos := [2]float64 又因为redis工作线程是单线程的,因此无法充分利用多核,无法通过增加redis server的CPU核数来提升性能,只能添加从库。 80% 22 90% 24 95% 26 98% 28 99% 30 100% 66 (longest request) 可以看到当优化后性能更差了

    42210编辑于 2024-09-02
  • 来自专栏黑光技术

    Redis源码分析2:Redis的事件处理模型

    前言 上一篇分析了一下redis的大致框架和启动过程,这篇我想分析一下redis的事件处理模型,当然也包含了网络事件的处理模型。 redis除了其高效的nosql存储非常有名以外,另外一个比较被称赞的就是其服务效率。像这类服务的是怎么设计的,为什么这么高效。所以我想这里来分析分析。 核心数据结构 在ae这个事件驱动框架的核心数据结构就是下面这个,在上篇分析的代码中创建中就有分析redis的main函数最后就是启动这个数据结构。 redis的客户端链接处理 这里提出2个问题: 客户端的连接请求那里处理 怎么和现在的ae处理框架联系起来 下面跟随这两个问题进行进一步的分析。 总结 通过上面的分析,我们应该可以理解了redis的基本事件处理模型。

    1.6K10发布于 2019-04-24
  • 来自专栏7DGroup

    性能分析分析决策树2

    背景 初学者对性能分析是个《横看成岭侧成峰,远近高低各不同。不识庐山真面目,只缘身在此山中。》那么应该怎么学习才能建立起自己的知识体系,才能做到《千山同一月,万户尽皆春。 千江有水千江月,万里无云万里天》今天咱们谈谈7DGroup创始人高楼老师的性能分析之决策树分析法二。 分析树图一 ? 第一层是业务指标, 响应时间 TPS 错误率 第二层是操作系统 CPU IO MEM NET 分析 在这一层咱们主要关注IO ,既然是关注IO,如果IO高应该怎么去分析?怎么定位? 1、在linux操作系统中IO分析法最常见的命令是iostat iostat -d -x -k 1 10 ? 如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢。

    74030发布于 2019-12-10
  • 来自专栏EffectiveCoding

    Redis string之SDS源码分析2

    上一篇我们看了Redis里面关于新旧版本对于sds的不同的结构体实现,接下来看看sds.c中关于redis动态字符串的具体操作。 从new开始: sdsnew函数是创建一个sds字符串的开始函数。 然后是代码逻辑: 1、首先定义了一个void *sh ,这里为了进一步提升性能不同长度的字符串只能使用不同的结构体,所以说无法确切定义 例如:struct sdshdr *sh,这里宏里是写死的。 然后声明一个别名(这里的sds其实就是sdshdr中的buf的指针) 2、根据不同的长度决定使用不同的结构体,然后下面那一段是一个经验写法为了放入超过32长度的字符串 3、定义一个具体标示具体结构体的指针 s:带扩容的sds字符串指针、size_t addlen:新串的长度 出参:新的sds指针,如果没发生扩容和入参是一致的 1、首先计算原sds还剩多少可分配空间,如果够的话,直接返回(一直到第8行) 2、 如果新长度小于最大预分配长度则扩容为2倍,如果新长度大于最大预分配长度则仅追加SDS_MAX_PREALLOC长度 3、如果是SDS_TYPE_5,则直接分配SDS_TYPE_8类型 4、如果类型没有发生变化则重新开辟一块内存将原先整个

    45710发布于 2019-07-31
  • 来自专栏侯哥的Python分享

    Mysql高级2-SQL性能分析

    ------+ 1 row in set (0.01 sec)   说明:慢查询默认是关闭的 # 开启慢查询 slow_query_log=1 # 设置慢查询的时间 long_query_time=2 set, 1 warning (0.00 sec)     说明1:第16条查询全部数据花费了12.28秒,第17条根据id查询只花费了0.001秒,第18条通过普通字段查询花费了6.00秒     说明2: | python | | 1 | 张三 | 3 | php | | 2 | 李四 | 2 | python | | 2 | 李四 | 3 | php | | 3 | .student_id | 1 | 100.00 | NULL | | 2 | MATERIALIZED | student_course | NULL | ref student_course表,最后执行student表 参数select_type:表示select的类型,常见的取值有,SIMPLE、PRIMARY、UNION、SUBQUERY 参数type:表示连接的类型,性能由好到差的链接类型为

    47430编辑于 2023-07-31
  • 来自专栏架构师成长之路

    Redis详解(6)性能监控:问题分析和优化

    2分析redis故障的根本原因 任何一个故障和性能问题,其根本“诱因”往往只有一个,称为这个故障的Root cause。 问题表现是综合情的,一般可能性较复杂,这里举2个例子: 服务调用Redis响应时间变大的性能总是;可能网络问题,redis慢查询,redis QPS增高达到性能瓶颈,redis fork阻塞和请求排队, 3、Redis容量规划和性能管理 通过分析redis资源使用和性能指标的监控历史趋势数据;对集群进行合理扩容(Scale-out)、缩容(Scale-back);对性能瓶颈优化处理等。 丢包率 :Redis服务响应质量受影响 2.2、Redis应用进程监控 1)、端口存活 2)、进程占用的cpu和内存 3)、网络连接数 2.3、redis性能指标 可以通过info 命令获取相关性能指标 要分析解决这个性能问题,需要跟踪命令处理数的数量和延迟时间。

    4K21编辑于 2022-04-14
  • 来自专栏用户8851537的专栏

    Redis之AOF持久化文件重载性能分析

    前面的话 测试将54w多条数据bak出来,在一台新的redis数据库重载,查看带来的压力 546167) "nssum005471" 546168) "nssum397176" 546169) "nssum196383 " 546170) "nssum163750" (17.14s) redis的aof文件大小 47M root@233:~/redis-5.0.4# ll -h /var/lib/redis/ total 60M drwxr-xr-x 2 root root 4.0K May 16 14:02 ./ drwxr-xr-x 40 root root 4.0K May 16 11:08 ../ -rw-r 6379> bgsave Background saving started 127.0.0.1:6379> 测试 在重载的某一刻,cpu的idl值直接为0,真是重重的的一击 loading的过程中,redis

    32330发布于 2021-07-27
  • 来自专栏阿沐教你学知识

    面试系列-2 redis列表场景分析实践

    2 数据结构list的理解 面试官:心里暗暗说道,小伙子,不要以为string的数据结构说的很好,就暗暗窃喜,你以为我们只是问这么简单的基础知识;你以为让你进来拧螺丝就可以放松技术含量,不可能滴! 索引定位时间复杂度O(n),插入和删除时间复杂度O(1),内存利用率高(可使用内存中不连续空间且需要空间时才创建);不能随机查找,必须从第一个数据开始遍历(这就知道为啥索引定位复杂度是O(n)了吧) 2、 这样是很消耗性能的,这样也会增加mysql的压力,如果数据量上百万的订单里,查询未支付状态订单,显然会越来越慢,大家可能会想着加索引,分表。但当你表数据增加到上千万的时候,性能很难在调优。 ① zset集合存储数据所占内存远大于list ② 假如消息体比较大,是不是会影响zset的排序性能 ③ 多线程跑必然会引起并发争抢任务,会导致任务被多次执行(当然这个可以使用redis执行lua脚本语言进行原子操作可以解决 面试官:你分析的挺细致的,考虑问题也很周全,并不是只有一种方案,这些都是在实际项目中实践才能体验出方案的可行性,以你目前的经验能想到这样做,挺不错的。 PS:面试官暗地里已经对你竖起了大拇指。

    64000发布于 2021-05-27
  • 来自专栏运维开发故事

    Redisson 高性能 Redis 分布式锁源码分析

    当线程 1 释放锁之后,会触发 redis 的解锁消息,消息的观察者会观察到然后去唤醒解锁的逻辑,线程 2 继续竞争锁。 ('exists', KEYS[1]) == 0) then " + "redis.call('hincrby', KEYS[1], ARGV[2], 1 KEYS[1], ARGV[2]) == 1) then " + "redis.call('hincrby', KEYS[1], ARGV[2], 1) ('hexists', KEYS[1], ARGV[2]) == 1) then " + "redis.call('pexpire', KEYS[1], "redis.call('publish', KEYS[2], ARGV[1]); " + "return 1; " +

    1.2K30编辑于 2022-09-15
  • 来自专栏后端码事

    Redis 性能测试

    \redis-benchmark.exe -n 100 测试结果: ====== PING_INLINE ====== 100 requests completed in 0.00 seconds seconds 50 parallel clients 3 bytes payload keep alive: 1 31.00% <= 1 milliseconds 100.00% <= 2 seconds 50 parallel clients 3 bytes payload keep alive: 1 8.00% <= 1 milliseconds 55.00% <= 2 seconds 50 parallel clients 3 bytes payload keep alive: 1 1.00% <= 1 milliseconds 28.00% <= 2 seconds 50 parallel clients 3 bytes payload keep alive: 1 1.00% <= 1 milliseconds 12.00% <= 2

    77750发布于 2020-09-11
  • 来自专栏用户8644135的专栏

    Redis 性能测试

    Redis 性能测试 Redis 性能测试是通过同时执行多个命令实现的。 语法 redis 性能测试的基本命令如下: redis-benchmark [option] [option value] 注意:该命令是在redis的目录下执行的,而不是redis客户端的内部指令。 实例 以下实例同时执行10000个请求来检测性能: [root@localhost ~]# redis-benchmark -n 10000 -q PING_INLINE: 99009.90 requests 性能测试工具可选参数如下所示: 序号 选项 描述 默认值 1 -h 指定服务器主机名 127.0.0.1 2 -p 指定服务器端口 6379 3 -s 指定服务器socket 4 -c 指定并发连接数 实例 以下实例我们使用了多个参数来测试redis性能: [root@localhost ~]# redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n

    1.1K20发布于 2021-07-02
  • 来自专栏*坤的Blog

    redis性能测试

    *注意*   每次读写时候,由于电脑性能对比有差异性,所以可以先行通过3.2.4的快速测试,对比一下自己的电脑性能之后再进行测试,因为楼主昨天做测试的时候电脑有些卡,导致今天的数据重新测试时候都快了很多 窗口.   3.1.2 测试过程:   主从均关闭,开启主redis导入少量数据到主redis,开启从redis,从redis有一样的数据.    主从均关闭,开启从redis,删除少量数据到从redis(management tool for redis),开启主redis,主redis数据不变化,刷新从,从redis恢复原来的数据.    主从均开启,操作部分数据到主redis,从redis有同样的数据,   主从均开启,删除部分数据(management tool for redis)到从redis,主redis原有数据不会变动,再次刷新从   通过结果对比分析可以看到,快速的读写操作的速度还是比较高效的,从这里也可以看到电脑性能对于程序的影响,这个是正常编辑代码时候输出的效率,读者可以对比自己的电脑输出的时间,和楼主的数据做一个误差对比

    3.2K21发布于 2018-06-04
领券