是否可以使用 MTR over TCP?如果不行,还有其他选择吗?我做了一些研究,但找不到任何方法可以做到这一点,所以我想知道是否有人有过这样的经验。如果真的没有这样的事情,那么从网络角度来看,最好的方法是使用非常快速的 ICMP 请求对 MySQL 服务器进行扩展测试,以便我们能够通过网络解决非常快速的数据包丢失问题。
答案1
MTR
对于这种故障排除来说非常有效。尝试以 15 秒或 60 秒的间隔运行它。统计信息将为您提供有关哪些路由器或网段可能导致问题的信息。随着最近使用 2 级路由器的趋势,这些路由器或网段对 MTR(和其他工具)来说是不可见的。
许多 TCP 堆栈都有计数器可用来识别问题。重传和无序数据包可能表示存在问题,尤其是当百分比不正常时。
如果您发送大量数据,则 TCP 窗口可能会引起问题。检查您是否遇到 Bufferbloat 问题。
有一些工具tcptraceroute
可以执行与MTR
TCP 提供的跟踪类似的跟踪,这可以解决 ICMP 回显数据包的限制。
Munin
、Nagios
或等工具Icinga
可用于持续监控您的网络和数据库服务器。如果发现问题,它们还可以发送警报。
答案2
当您使用的版本足够新时,MTR 支持 TCP 数据包跟踪。版本 0.85 和 0.86(当前稳定版本)支持此功能。
我知道这是一篇旧帖子,但我认为它对搜索此问题的人来说可能有用。rhel/cent 6.6 中提供的旧版本或更旧的版本将不具备此功能(即 0.75 之前的版本)。