1. 同样在一组磁盘上的两个TT端口,其读写操作是根据均匀的hash方式来分配的,但是,其中一个3001端口同步数据就很慢,而3002端口同步数据就很快,重启3001端口依然很慢; 把3002端口停掉之后,3001端口依然很慢。
2. 通过tcpdump抓包发现:
3001端口的master 2001端口,数据流表现为:
2001 ——–很多数据给—–》 3001
3001 ——–因为吃不消,所以act 一个win(0) 给 —-》 2001
2001 ——–不断询问 ———-》3001
2001 ——–不断询问 ———-》3001
2001 ——–不断询问 ———-》3001
3001 ——–响应,说在给点儿吧 ——-》 2001
2001 ——–很多数据给 ———…..
使用netstat也可以发现,对于3001的同步连接中的接受队列总是会阻塞很多数据,看来是执行的太慢
3. 观察 3001端口的执行情况,下面是使用strace跟踪的这个繁忙的ttserver进程的系统调用情况:
为什么futex耗费的时间如此惊人?