



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
记录本次Redis性能优化开放平台部-陈仕松一、 现象描述线上环境Redis采用哨兵模式,版本为3.0.7,服务器采用4C8G,TPS在20000左右,当设备(NB)在线用户数超过12万后,主节点单核CPU从30%左右直线上升至将近60%,CPU负荷高居不下且不稳定间接影响业务量的提升,亟待优化。由于redis单线程的设计特性,任何一条阻塞的命令都会引起redis整个实例的阻塞,所以在使用过程中,我们首先从Linux环境情况、命令分布,key情况,客户端情况等方面检查。二、 检查指标内存使用情况redis使用内存为800M,linux内存使用率85%,未使用SWAP。(因为有其他java进程共用服务器),属于正常情况。单核CPU使用情况整体CPU使用情况整体25%左右,正常范围。IO,磁盘IO和网络IO使用情况
我们发现磁盘IO比较低,而网络出口流量达到15M,说明读数据量比较大。网络延迟情况ICMPresponsetime检查网络响应时间在5ms以内,属于正常范围。命令执行分布和时间,infocommandstats命令。检查发现,在短时间内有大量的hgetall调用,hgetall方法是将hashtable里面的所有内容一次性全部读出来,如果哈希值的内容比较大,极容易导致堵塞。是一个优化点。TPS,检查TPS的方法可以统计total_commands_processed增长量当前TPS不到2.5万,未达到瓶颈点。检查慢查询slowlogget128,这个可以定位优化。可以看到慢查询命令是主要是hmset,hgetall和scan等,不过整体慢查询时间能接受。检查客户端列表,检查连接时间和内存消耗omem的客户端。redis-cli-p6379-hxxxx-axxxxclientlist|grep-v"omem=0”发现有较多长期连接的客户端,总的客户端数量650bigkey检查,优化比较大的keyredis-cli-p6379-hxxxx-axxxx--bigkeys发现较多bigkey,后期需要进行优化。BiggesthashElggiesthashBiggestlistB1ggesrlistBiggestlistBiggest11stBiggesthashElggiesthashBiggestlistB1ggesrlistBiggestlistBiggest11stBiggestzsetB~iggestzs-EtB1ggesrhashBiggesthashBlggesrlistBiggestlistb1ggesrHsiBlgge5thashfoundfoundfoundfoundfoundfoundfoundfoundfoundfoundfoundfoundfoundfound5-0SOsosasasosa如sasosasasasafarFNBrOT#TKM#yM"ith2fieldsfarrNBlOT^CL1^665820037391625'withfarRNBI0T^REG^8699760506755331GchfarrNBIOT#REG#S65B20{}370S773E'farfrNBIOT^REG^665820032369658*vrithfar■NBrOT#R£G#S65®2003203sooo1with17flelldsiternsitemsitem5ItienisfarB65820032501S4S'vrith6menbersfar1imei865£2003261051fi'with10membBr^far「nhirffifTr]irh"IPlrlfiwfarjMEldTlfar'rjBLar#R£G#&65e2OO33367goo'viitn5ireinsfar'dph_3.13000039'with233Itemsrar「ciphM 门口门口门了"wlrh目门二It户二「 _far『而■■北5c匚而Lithi£25互:1三、检查服务器内核参数(Redis官方建议设置,服务器默认未设置,需要手工设置)内存分配Redis是内存操作,需要优先使用内存。设置overcommit为1。THP禁用THP开启后,最大内存页为2M,因为fork调用的copy-on-write机制是基于操作系统页这个单位的,也就是只有有写入的脏页会被复制,但是一般系统不会在短时间内所有的页都发生了写入而导致复制,所以每次写命令引起的内存复制从4K变成了2M,从而拖慢写操作的执行时间,导致大量写操作慢查询。所以确保禁用Linux内核特性transparenthugepages,通过命令echonever>sys/kernel/mm/transparent_hugepage/enabled来设置。swap使用概率防止内存溢出OOM,故设置允许使用swap。(Redis本身不建议使用SWAP,OOM的情况万不得已%echo{bestvalue}>/proc/sys/vm/swappinessulimit设置需要设置比最大客户端连接数要大至少32。因为此服务器还有java应用程序,所以需要设置得更大。TCPbacklog设置设置TCP等待连接队列长度为最大值。echo511>/proc/sys/net/core/somaxconn四、检查配置文件内存设置若是启用了Redis快照功能,应该设置"maxmemory”值为系统可使用内存的45%,设置一个明确的maxmemory参数来限制你的实例,以便确保实例会报告错误而不是当接近系统内存限制时失败。此Redis服务器内存空间较多,暂未设置。绑定本机网卡检查日志会发现陆陆续续有较多错误:ErrorconditiononsocketforSYNC:Connectionrefused发现是连接问题,需要在主节点配置文件绑定本机IP,增加bindx.x.x.x检查数据持久化策略数据落磁盘尽可能减少性能损坏,以空间换时间。设置如下命令:rdbcompressionnordbchecksumno客户端timeout设置一个超时时间,防止无用的连接占用资源。设置如下命令:timeout150tcp-keepalive150优化AOF和RDB,减少占用CPU时间主库可以不进行dump操作或者降低dump频率。取消AOF持久化。命令如下:appendonlyno五、优化后情况经过优化后观察,业务量已经增加了30%,TPS达到了3.5万,网络流量已经增加了30%,从15M增加到了20M多,而单核cpu平
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 17873-2025纯氖、高纯氖和超纯氖
- 中国饲料原料项目商业计划书
- 中国塑料及其制品项目投资计划书
- 中国导电硅橡胶项目投资计划书
- 邯郸市中医院卵巢早衰综合管理考核
- 石家庄市人民医院冲击波能量调控技能考核
- 年产180万t煤制甲醇项目可行性研究报告
- 中国地板涂料项目商业计划书
- 中国有色橡塑地垫项目创业计划书
- 鹤岗市中医院瘘管护理技术专项考核
- 液压油缸计算器
- 护理质量督导记录
- 北京市中考新定义练习题
- 三丁基氯化锡安全技术说明书MSDS
- 超声引导下肝穿刺活检课件
- 消毒供应室专科理论考试题库(单选、多选共500题)
- 关于跌倒坠床压疮防范及护理措施课件
- 品质意识,品质基础知识培训
- 社区矫正人员心理健康讲座课件
- 胖东来的企业文化课件
- “一村一辅警”人员登记表
评论
0/150
提交评论