如何debuggingnetworking负载下的linux延迟问题

我有12个混合的Ubuntu 12/14数据库Cassandra节点。 所有节点都是带有SSD,1Gb网卡的裸机节点,并且都位于相同的DC(受pipe理的COLO)中。

在轻微的操作下,所有节点和我们的云节点(在同一个DC中)之间的延迟都在1ms以下。

当我开始写入数据库节点时,来自和来自这些数据库节点的延迟大幅攀升至大约300ms。 CPU负载也在1(4个物理内核),磁盘利用率低于3%,通过dstat,networking负载约18MiB。

本地读取和写入Cassandra相对较快,所以我排除了应用程序层被超载。

我应该调整哪些工具和设置来了解为什么我的延迟如此糟糕? 我有监视工具来查看这些问题,我不确定从哪里开始诊断。

我这样的问题的出发点通常是perf top 。 这将很快给你一个想法,花费最多的时间。 请参阅https://perf.wiki.kernel.org/index.php/Tutorial关于如何使用它的一些很好的例子。