Codis 千万并发下调优

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
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
目录
相关文章
|
2月前
|
存储 监控 固态存储
在高并发环境下,如何优化 WAL 的写入性能?
在高并发环境下,如何优化 WAL 的写入性能?
|
4月前
|
存储 负载均衡 并行计算
Dask性能调优指南:从单机到多节点的最佳配置
【8月更文第29天】Dask 是一个灵活的并行计算库,适用于数组、数据帧和列表等数据结构,能够在单个机器上高效运行,也可以扩展到分布式集群。由于其灵活性和可扩展性,Dask 成为了数据科学家和工程师们处理大规模数据集的理想选择。本文将详细介绍如何针对不同的硬件环境优化 Dask 的性能,包括单机和多节点集群环境。
401 8
|
5月前
|
NoSQL Redis
Redis性能优化问题之根据 Redis 的 AOF 配置级别优化性能,如何解决
Redis性能优化问题之根据 Redis 的 AOF 配置级别优化性能,如何解决
|
5月前
|
NoSQL 网络协议 Redis
Redis性能优化问题之如何判断 Redis 性能下降是否由复杂度过高的命令引起
Redis性能优化问题之如何判断 Redis 性能下降是否由复杂度过高的命令引起
|
5月前
|
监控 应用服务中间件 nginx
高并发架构设计三大利器:缓存、限流和降级问题之Nginx的并发连接数计数的问题如何解决
高并发架构设计三大利器:缓存、限流和降级问题之Nginx的并发连接数计数的问题如何解决
|
6月前
|
存储 Prometheus 监控
Redis 调优指南:提高性能和稳定性的全面策略
Redis 调优指南:提高性能和稳定性的全面策略
300 0
|
7月前
|
存储 缓存 监控
你的Redis真的变慢了吗?性能优化如何做
本文先讲述了Redis变慢的判别方法,后面讲述了如何提升性能。
102951 5
|
SQL druid Java
高并发场景下必备利器:掌握连接池的使用和调优技巧
高并发场景下必备利器:掌握连接池的使用和调优技巧
|
7月前
|
存储 缓存 NoSQL
《吊打面试官》系列-Redis双写一致性、并发竞争、线程模型
《吊打面试官》系列-Redis双写一致性、并发竞争、线程模型
65 0
|
监控 NoSQL 测试技术
Cassandra 性能压测
Cassandra 性能压测
383 0