如何调试网络负载下的 Linux 延迟问题

如何调试网络负载下的 Linux 延迟问题

我有 12 个混合的 Ubuntu 12/14 数据库 Cassandra 节点。所有节点都是带有 SSD、1Gb 网卡的裸机节点,并且都位于同一个 DC(托管共置)中。

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

当我开始增加对数据库节点的写入时,这些数据库节点的往返延迟急剧上升到 300 毫秒左右。CPU 负载也在 1 左右(4 个物理核心),磁盘利用率低于 3%,通过 dstat,网络负载约为 18MiB。

本地对 Cassandra 的读写相对较快,因此我排除了应用程序层过载的可能性。

我应该研究哪些工具和设置来进行调整,以了解延迟如此严重的原因?我已安装监控工具来查看这些问题,但不确定从哪里开始诊断这些问题。

答案1

对于此类问题,我的出发点通常是perf top。这将让您快速了解花费最多时间的地方。请参阅https://perf.wiki.kernel.org/index.php/Tutorial了解一些如何使用它的很好的例子。

相关内容