redis排重_Redis 优化的一点小事

本文介绍了作者在排查用户反馈的4xx/5xx错误时,发现Redis连接异常和容器挂掉的问题。通过对代码进行异常处理、优化AOF文件加载速度以及按照Redis警告进行系统设置优化,成功提高了服务的可用性。此外,还探讨了TCP Backlog、内存过量承诺和透明大页面等知识点。
摘要由CSDN通过智能技术生成

背景

杂货铺的读者如果有留意,之前的博文中有提到自建 Docker 集群的方案。局限于机器数量和配置,我只做了站点的微服务化相关的工作,假设数据中心可靠的前提下,保证了站点的高可用。

不得不说,所有的侥幸心理都会埋下一个地雷,这次也不例外。最近就经常有用户反映,奶油葡萄经常 4xx/5xx 的报错,但每次都是过一会就自动恢复。

排查问题

周末抽空研究了下,发现了两个问题。

第一个是奶油的代码里没有对连接 Redis 做异常处理,当出现异常时,会直接把 Apache 的相关线程挂掉,如果 Redis 在一段时间内(比如一分钟)处于非正常状态,容器中所有的 Apache 相关线程挂掉之后,容器直接挂掉。紧接着,到达 Traefik 的请求陆续无法被处理,产生 4xx/5xx 错误。

第二个问题是 Redis 服务下的容器会莫名挂掉,除了起容器时,留下的几句警告,没有其它线索,就像是有第三方手动触发一样。

1:M 12 May 2019 04:59:14.670 # Server initialized,

1:C 12 May 2019 04:59:14.656 # Redis version=5.0.4, bits=64, commit=00000000, modified=0, pid=1, just started,1:C 12 May 2019 04:59:14.656 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo,

1:C 12 May 2019 04:59:14.656 # Configuration loaded,

1:M 12 May 2019 04:59:14.670 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.,

1:M 12 May 2019 04:59:14.670 * Running mode=standalone, port=6379.,

1:M 12 May 2019 04:59:14.670 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.,

1:M 12 May 2019 04:59:14.670 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值