淘宝tair可能会超时的原因总结
最近在看tair的架构,由于实际项目中存在大量的超时,很想探究一下其内部的原因
先看一下tair的架构
由三部分组成
Config Server:通过heart beat 来维护集群中的可用节点,并根据可用节点,构建数据在集群中的分布信息(对照信息表)
Data Server:用来存储数据信息,并按照Config Server来完成复制和迁移工作
Client:客户端,在初始化的时候在Config Server中获得数据分布信息,然后根据分布信息和Data Server进行交互,获取对应数据
Config Server中数据分布表(对照信息表):
0 192.168.10.1
1 192.168.10.2
2 192.168.10.1
3 192.168.10.2
4 192.168.10.1
5 192.168.10.2
下面是在工作中的碰到的几点超时原因的总结
1.key的热点问题
某些key存在大量的冲突,导致分布不均匀,在这样的情况下,如果并发量高的话,可能会导致请求都打到某一台dataServer上了,引起大量的超时
2.dataServer服务器数量不足以支撑当前的并发量
3.dataServer服务器资源抢占
4.磁盘写入抖动
5.mdb分配大小不合理
某些存储型的业务,没有明显热点数据,但mdb配置的非常大,导致page cache太少,大量磁盘io
6.客户端问题
客户端服务器资源紧张(如cpu使用高,java fullgc等),导致tair线程得不到调度,进而超时
哔哔叭哔哄