需要一些帮助来诊断和调优我的Redis设置的性能(Ubuntu14.04机器上的2个redis服务器实例)。注意,一个写量大的Django web应用程序与Redis共享VM。该机器有8核和25 RAM内存。
我最近发现,即使内存还没有耗尽,后台保存也会断断续续地失败(带有fork()错误)。为了弥补这一点,我应用了设置vm.overcommit_memory=1 (以前是default)。
此外,vm.swappiness=2,vm.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有以下输出(如果需要的话):
total used free shared buffers cached
Mem: 28136 27912 224 576 68 6778
-/+ buffers/cache: 21064 7071
Swap: 0 0 0发布于 2017-03-06 06:49:25
由于您的系统中没有启用交换(如果您有SSD,这可能是值得重新考虑的),(并且您的swappiness被设置为一个低值),所以您不能将其归咎于内存争用增加的交换。
在VFS缓存中缓存大约6GB的数据。在争用的情况下,这个缓存会耗尽,而倾向于进程工作内存,所以我相信可以安全地说,内存并不是一个全部的问题。
这是一个暗箱操作,但我的猜测是,您的redis服务器被配置为“同步”/“保存”(在redis配置文件“阑尾同步”中搜索),通过删除内存分配限制,它现在实际上完成了它的工作:)
如果数据不是超级关键,请将appendfsync设置为never,并可能将save设置设置为tweek,以减少频繁的保存。
顺便说一下,关于红叉的孩子,我相信你是对的。
https://stackoverflow.com/questions/42615406
复制相似问题