首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提高Redis设置的性能(设置vm.overcommit_memory=1后退化)

提高Redis设置的性能(设置vm.overcommit_memory=1后退化)
EN

Stack Overflow用户
提问于 2017-03-05 23:41:08
回答 1查看 2.3K关注 0票数 4

需要一些帮助来诊断和调优我的Redis设置的性能(Ubuntu14.04机器上的2个redis服务器实例)。注意,一个写量大的Django web应用程序与Redis共享VM。该机器有8核和25 RAM内存。

我最近发现,即使内存还没有耗尽,后台保存也会断断续续地失败(带有fork()错误)。为了弥补这一点,我应用了设置vm.overcommit_memory=1 (以前是default)。

此外,vm.swappiness=2vm.overcommit_ratio=50.我还通过echo never > /sys/kernel/mm/transparent_hugepage/enabled禁用了设置中的透明大页面(尽管没有完成echo never > /sys/kernel/mm/transparent_hugepage/defrag)。

在更改overcommit_memory设置之后,我注意到I/O利用率从13%上升到36% (平均)。每秒的I/O操作增加了一倍,redis服务器CPU消耗增加了一倍多,占用的内存增加了66%。因此,服务器响应时间大幅度增加。这就是应用vm.overcommit_memory=1之后事情突然升级的原因。

请注意,红-服务器是唯一的成分显示升级-金牛,尼克斯,芹菜等都表现得像以前一样。此外,红宝石已经变得非常尖尖的。

最后,New已经开始向我展示3个redis实例,而不是2(最下面的图表)。我认为分叉的孩子被算作第三名:

我的问题是:在这里如何诊断和挽救性能?作为服务器管理的新手,我不知道如何继续。帮我弄清楚这是怎么回事我怎么解决的。

free -m有以下输出(如果需要的话):

代码语言:javascript
复制
             total       used       free     shared    buffers     cached
Mem:         28136      27912        224        576         68       6778
-/+ buffers/cache:      21064       7071
Swap:            0          0          0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-06 06:49:25

由于您的系统中没有启用交换(如果您有SSD,这可能是值得重新考虑的),(并且您的swappiness被设置为一个低值),所以您不能将其归咎于内存争用增加的交换。

在VFS缓存中缓存大约6GB的数据。在争用的情况下,这个缓存会耗尽,而倾向于进程工作内存,所以我相信可以安全地说,内存并不是一个全部的问题。

这是一个暗箱操作,但我的猜测是,您的redis服务器被配置为“同步”/“保存”(在redis配置文件“阑尾同步”中搜索),通过删除内存分配限制,它现在实际上完成了它的工作:)

如果数据不是超级关键,请将appendfsync设置为never,并可能将save设置设置为tweek,以减少频繁的保存。

顺便说一下,关于红叉的孩子,我相信你是对的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42615406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档