欢迎来到天天文库
浏览记录
ID:57295345
大小:484.75 KB
页数:39页
时间:2020-08-10
《Redis性能优化培训课件.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Redis性能优化培训快速掌握Redis性能优化目录Redis简介Redis特性Redis性能数据指标常见性能问题分析性能优化方案性能测试Redis简介Redis是一个开源的高性能Nosql数据库,也是基于内存的Key-Value存储系统,可以用作数据库、缓存和消息中间件支持多种数据结构:字符串、哈希表、列表、集合、有序集合、位图、Hyperloglogs内置了复制,LUA脚本,LRU数据淘汰,事务和不同级别的磁盘持久化等功能通过Sentinel哨兵和Cluster自动分片集群提供高可用性Redis特性基于单线程模型实现,一个线程服务所有客户端请求,采用非阻塞式IO
2、线程安全,所有操作都是原子的,不会因并发产生数据异常速度非常快,大部分命令算法时间复杂度都是O(1)使用高耗时Redis命令很危险,会占用唯一线程的大量处理时间,导致所有的请求都被拖慢Redis性能数据指标通过Redis-cli命令行界面访问到Redis服务器,使用info命令获取丰富的Redis性能数据指标info命令输出的数据可分为10个类别,分别是:serverclientsmemorypersistencestatsreplicationcpucommandstatsclusterkeyspace重要性能指标memory输入infomemory命令,只返回与
3、内存相关的数据常用内存数据指标used_memory:已使用内存used_memory_rss:从操作系统上显示已经分配的内存总量mem_fragmentation_ratio:内存碎片率used_memory_lua:Lua脚本引擎所使用的内存大小mem_allocator:在编译时指定的Redis使用的内存分配器,可以是libc、jemalloc、tcmalloc以上指标都是以字节(byte)为单位重要性能指标CPUused_cpu_sys:55.09 --Redis服务器耗费的系统CPUused_cpu_user:26.16 --
4、Redis服务器耗费的用户CPUused_cpu_sys_children:0.02 --后台进程耗费的系统CPUused_cpu_user_children:0.01 --后台进程耗费的用户CPU重要性能指标Clients记录了已连接客户端的信息connected_clients:1 --已连接客户端的数量(不包括通过从属服务器连接的客户端)client_longest_output_list:0 --当前连接的客户端当中,最长的输出列表client_biggest_input_buf:0 --当前连接的客户端当中,最大输入缓
5、存blocked_clients:0 --正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量重要性能指标Stats记录了一般统计信息total_connections_received:782640 --服务器已接受的连接请求数量total_commands_processed:6401614 --服务器已执行的命令数量instantaneous_ops_per_sec:7--服务器每秒钟执行的命令数量latest_fork_usec:475--最近一次fork()操作耗费的毫秒数重要性能指标Commands
6、tats记录了各种不同类型的命令的执行统计信息记录命令执行的次数、命令耗费的CPU时间、执行每个命令耗费的平均CPU时间等等常见性能问题分析一生产系统刚开始运行阶段,系统稳定。但是运行一段时间后,发现部分时间段系统接口响应变慢。查看客户端日志经常会出现这样的错误:redis.clients.jedis.exceptions.JedisConnectionException:java.net.SocketTimeoutException:Readtimedout执行slowlog查看慢查询语句,发现有大量的keys命令操作,keys命令在大量并发情况下性能非常差正式环
7、境中,尽量避免使用keys,接下来找出使用keys的代码做优化,至此,timeout问题解决常见性能问题分析二生产环境长时间的运行后,经常会有接口返回数据失败的情况,或者是从监控上发现数据库压力某一时间暴增。查看客户端日志发现这样的错误:redis.clients.jedis.exceptions.JedisConnectionException:Couldnotgetaresourcefromthepool执行clientlist命令,发现大量的client的idle时间特别长检查配置发现timeout和tcp-keepalive均未启用(均为0),redis
此文档下载收益归作者所有