Codis 千万并发下调优

简介: 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、调整网卡队列



目录
相关文章
|
JSON NoSQL Redis
redis-full-check校验工具
redis-full-check是阿里云Redis&MongoDB团队开源的用于校验2个redis数据是否一致的工具,通常用于redis数据迁移后正确性的校验。
27394 0
|
存储 缓存 负载均衡
《深入分布式缓存》之“关于Tair哪些事儿”
版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载。
2649 0
|
6月前
|
传感器 人工智能 安全
构建AI智能体:五十二、反应式智能体:AI世界的条件反射,真的可以又快又稳
反应式智能体是一种基于感知-行动模式的智能系统,它不依赖复杂的内部模型,而是通过简单的条件-动作规则对环境做出即时响应。文章通过蜜蜂采蜜、膝跳反射等例子,阐述了反应式智能体的核心思想:快速、直接的刺激-反应机制。重点介绍了罗德尼·布鲁克斯提出的包容架构,该架构通过分层的行为模块和优先级仲裁机制,使简单规则组合产生复杂行为。以扫地机器人为例,展示了反应式设计在实时响应、避障导航等方面的优势,同时也指出了其在复杂规划任务中的局限性。
548 4
|
Ubuntu Linux Shell
Ubuntu gnome WhiteSur-gtk-theme类mac主题正确安装和卸载方式
通过这个过程,用户不仅可以定制自己的桌面外观,还可以学习到更多关于 Linux 系统管理的知识,从而更好地掌握系统配置和主题管理的技巧。
2635 12
|
移动开发 前端开发 JavaScript
2024年前端框架趋势概览
【10月更文挑战第2天】本文综合了多个来源的信息,以提供一个全面的2024年前端框架趋势概览。希望通过本文,读者能够把握前端开发的最新动态,并在自己的项目中应用这些趋势。
|
数据采集 存储 NoSQL
AArch64架构调用链性能数据采集原理
本次分享的主题是AArch64架构调用链性能数据采集原理,由阿里云苏轩楠分享。主要分为五个部分: 1. 术语解释 2. Frame Pointer RegisterStack Unwind 3. Dwarf-based Stack Unwind 4. /BRBE/CSRE Stack Unwind 5. Kernel-space Stack Unwind&eBPF Unwinders
493 0
|
Linux Python Windows
Linux 系统中 挂载 U 盘 方法
在 Linux 系统中,与 Windows 不一样的是,无法自动识别加载外部设备例如 U 盘、硬盘;例如用 PyCharm 或 IDEA 打开 U 盘中的内容,在没有完成挂载操作之前是不可行的 如果想实现上面操作,第一步,需要对 U 盘等外接移动设备完成 挂载操作
Linux 系统中 挂载 U 盘 方法
|
Prometheus Kubernetes API
k8s教程(pod篇)-扩缩容
k8s教程(pod篇)-扩缩容
847 1
|
Web App开发 编译器 测试技术
Go PGO 快速上手,性能可提高 2~4%!
Go PGO 快速上手,性能可提高 2~4%!
|
IDE 测试技术 开发工具
Digispark(ATTINY85) 微型开发板驱动与开发环境安装教程
本教程是基于Arduino IDE中进行编译调试,如果你不想用Arduino IDE可以尝试从官方教程中找到其他方案。官方的教程:http://digistump.
2652 0