博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何让Redis Server运行更稳定
阅读量:6834 次
发布时间:2019-06-26

本文共 863 字,大约阅读时间需要 2 分钟。

hot3.png

  • 尽量避免性能抖动(因为redis是单线程的,所以应该避免)
    • 大范围的数据读取 ( MGET, ZRANGE, SORT / LREM / SUNION / SDIFF / SINTER, KEYS, SMEMBERS, HGETALL )
    • 谨慎使用block command ( BLPOP / BRPOPLPUSH / BRPOP / MULTI / EXEC )
  • 注意内存使用
    • 和1中一样,要注意大范围数据读取造成的内存使用增加过多
    • 和内存配置相关的设置
      • maxmemory ( 50% of total memory )
      • 设置系统overcommit_memory=1(分配内存时,永远假装有足够的内存)
      • 开启swap,与内存大小一致
      • 设置系统zone_reclaim_mode为0,所以可以启用NUMA模式的remote memory分配模式
      • 对于kenerl = 3.5-rc1,设置vm.swappiness = 1 ( 有swap就用swap, 而不是oom )
      • echo –15 > /proc/`pidof redis-server`/oom_adj ( 减少redis进程因为oom被kill的可能性)。oom发生时,优先kill其他进程
      • 关闭BGSAVE / BGREWRITEAOF, 改为手动执行
  • 尽量让字符串长度在5KB以内

 

NUMA模式

在NUMA CPU模式下,系统内核都是优先使用直接attach到某个cpu core上的memory,在没有设置zone_reclaim_mode=0时,如果某个cpu attach的memory不够了,那么操作系统将优先swap local memory,这样会造成有用的page被swap out,而其他cpu core还有很多free memory。启用zone_reclaim_mode=0是,系统内核将优先到别的cpu core管理的内存去获取内存。

numa

转载于:https://my.oschina.net/hailincai/blog/525091

你可能感兴趣的文章
关于Qt的MVC模型思想(转载)
查看>>
Vagrant支持Amazon AWS和Rackspace
查看>>
JNDI全攻略(二)(转)
查看>>
POJ1463:Strategic game(树形DP)
查看>>
SPOJ LCS(Longest Common Substring-后缀自动机-结点的Parent包含关系)
查看>>
Tuning 05 Sizing other SGA Structure
查看>>
用 Qt Creator 开发非 Qt 的 C/C++ 程序
查看>>
Android-Cannot merge new index 66195 into a non-jumbo instruction的解决的方法
查看>>
解决 com.sun.*包导入错误
查看>>
【WP 8.1开发】如何动态生成Gif动画
查看>>
C#零基础入门08:代码规范
查看>>
关于php的mysqlnd驱动
查看>>
Response
查看>>
人人都看得懂的正则表达式教程
查看>>
python matplotlib 绘图
查看>>
Uncaught RangeError: Maximum call stack size exceeded解决思路
查看>>
运用.net core配合VS 2015制作nuget包
查看>>
JSP三大指令 /9大内置对象 /Javabean / EL
查看>>
WebPack系列:Webpack编译的代码如何在tomcat中使用时静态资源路径不对的问题如何解决...
查看>>
《HelloGitHub》之GitHub Bot
查看>>