Codis 千万并发下调优

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis + Codis 千万并发下产生的问题

环境:

 8台机器 32C 256G,redis 66从在同一台机器上,dashbaord也在redis00上。codis-proxy 8C,每台机器开2proxy。万M网络,CentosOS 6.5 内核2.6.32-431.el6.x86_64

 

现象:

sprak 70台机器  codis 开启pipline,不控制pipline大小,同时调度400CPU,有大量reset报错。长链接。


排查:

 1、Redis没有报错

 2、查看qps 流量很低

 3、Codis proxy 没有报错,通过网页查看流量过山车

一时无法定位问题


解决方案:

  方案一:

      codis-proxy redis分开,分4台,cpu 30C ,每台要机器部署1codis-proxy日志级别调到warn

   此方案未解决问题,问题依然出现。

 

通过tcpdumptcpdump -i bond0 -vnn port 9100 >tcp.log

1d913f4436c4b09b92107767eb028dae0cd6d311

 

一个pipline seesion的读写buffers13M,生产速度大于消费时,各session的buffers不够用,将停止消费,服务端tcp协议将窗口不断放小直到0。长时间处于0窗口的话,tcp协议会给对端发reset。所以业务端老看到reset

 

方案二:

      调整codis_proxy 参数:session_max_bufsize=231072 每一个seesion 20M左右。

      调整spark 端写速度pipline 5000个一发,(pipline 5000 spark端一次发5000个给codiscodis处理完之后在返回给spark5000个。) spark端会调200个进程每一个进程5000:200X5000=1000000 理论会有1000000opstcp会有一些限速。最终稳定值在70多万。

fd8bc37d2ff5ce92fcd2f324d40db6df563326b8

网络情况:

33f7391bc7501d57fefba741ba35d46279718d6c

这只是in的值250MB,进出总 量在500MB左右。

 

spark端没有报错。

 

实验:spark pipline 10000万一发,峰值达到:

7fecf6f22412b360cd651e1fe57e2b35c2697cdf


是的你没有看错:700多万。


700万并发,业务端出现了问题,而且700万量太大对网络也是一个压力,因此,我们经测试200万,属于一个业务和运维都可以接受的值!

ce2894e3a9df1b30b4129946588ec5115ade1757


 

还能在提速吗?

如果窄干机机器性能:

1、调速CPU中断,CPU默认中断都在第一个CPU上,

cat /proc/interrupts >f

vim f     打开这个文件 set nowrap   让他按行排列

set nowrap

可以看到这些中断在0上最多。

 

2、调整网卡队列



相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
3月前
|
监控 NoSQL Java
Redis之高并发超卖问题解决方案
在高并发的秒杀抢购场景中,常常会面临一个称为“超卖”(Over-Selling)的问题。超卖指的是同一件商品被售出的数量超过了实际库存数量,导致库存出现负数。这是由于多个用户同时发起抢购请求,而系统未能有效地控制库存的并发访问。
143 0
|
9月前
|
存储 缓存 运维
Redis10大性能优化策略 2
Redis10大性能优化策略
|
27天前
|
NoSQL 数据处理 调度
【Redis深度专题】「踩坑技术提升」探索Redis 6.0为何必须启用多线程以提升性能与效率
【Redis深度专题】「踩坑技术提升」探索Redis 6.0为何必须启用多线程以提升性能与效率
180 0
|
JavaScript NoSQL Java
高并发架构系列:Redis为什么是单线程、及高并发快的3大原因详解
Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快;2.redis是单线程的,省去了很多上下文切换线程的时间;3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。
3682 0
|
3月前
|
存储 缓存 监控
Redis调优大揭秘:掌握这几十种技巧,让你的Redis更快更稳定!
Redis调优大揭秘:掌握这几十种技巧,让你的Redis更快更稳定!
149 0
|
4月前
|
NoSQL 测试技术 Redis
Redis【性能 01】Redis 5.x 6.x 7.x 共5个不同版本延迟及性能测试对比分析(单机版默认配置)
Redis【性能 01】Redis 5.x 6.x 7.x 共5个不同版本延迟及性能测试对比分析(单机版默认配置)
207 0
|
8月前
|
存储 负载均衡 NoSQL
Redis主从集群:提升性能和可靠性的利器
本文将介绍Redis主从集群的概念、工作原理以及它如何提升系统性能和可靠性。通过使用Redis主从集群,我们可以实现数据的分布式存储和负载均衡,同时提高系统的可扩展性和容错能力。
108 0
|
9月前
|
缓存 JSON NoSQL
提升Java开发中Redis性能的五种优化策略
Redis是一个高性能的键值存储系统,在Java开发中广泛应用于缓存、队列、计数器等场景。然而,虽然Redis本身具备出色的性能,但在实际使用中,我们仍然可以通过一些优化策略来提升Redis在Java应用中的性能表现。本文将介绍五种有效的Redis优化策略,帮助开发者充分发挥Redis的潜力。
418 0
|
9月前
|
存储 缓存 NoSQL
Redis10大性能优化策略 1
Redis10大性能优化策略
|
存储 缓存 监控
【Redis技术干货】带你彻底认识「内存碎片过高优化」功能和原理
【Redis技术干货】带你彻底认识「内存碎片过高优化」功能和原理
337 0
【Redis技术干货】带你彻底认识「内存碎片过高优化」功能和原理