刚刚开发完的全新架构的cache。在上线后每晚1点定时出现不能服务的状况。白天业务请求量大的时候处理队列都不会阻塞。而晚上请求量很小的时候,居然出现大面积服务停服。在提供服务的集群机器上,在1时没有定时任务。而单从服务器内部命令统计观察,发现命令处理队列出现堆积,查询时长由200ms变到了18s。考虑到旧cache没出现类似的情况,而新cache因为弄成了集群模式,增加了cache间通讯,问题可能出现在集群内部通信上。
向运维的同学询问了一下服务器在IDC的分布情况。发现有一台服务器(A)所在的机柜上跑着mysql的备份机器。在6个小时里要从32台db服务器完成3.3T的数据传输备份。使用rsync 同步文件将服务器(A)所在的机柜的入口带宽跑满了。导致所有欲从A服务器上取数据的请求产生时延,A服务器从其它服务器取得数据回复包产生时延。这样怎个集群就会因为某些命令需要跨机柜取数据而阻塞。导致cache不能向前端提供服务。本欲做到去单点故障却因带宽跑满而出现滚雪球效应。