【问题标题】:Why does a DNS lookup take so long with a MySQL connection?为什么使用 MySQL 连接进行 DNS 查找需要这么长时间?
【发布时间】:2026-02-17 22:45:01
【问题描述】:

我正在调试一些代码,并意识到一个方法需要将近 2 秒才能连接到 MySQL。经过一番挖掘(Why is constructing PDO connection slow?),我发现这是因为我使用的是“localhost”而不是“127.0.0.1”。这大大加快了速度。我的问题是,为什么?为什么在我的 /etc/hosts 中查找需要这么长时间?我会认为它真的很快。此外,这种优化并没有在我的工作桌面上加速任何东西,但肯定在我的笔记本电脑上工作(它们都运行 Ubuntu 12.04)

编辑:我的问题是为什么需要这么长时间。我了解链接问题中的评论说查找需要很长时间,但我想问为什么

【问题讨论】:

  • 对您已经链接到的问题的评论中没有回答这个问题吗?
  • 它只是说它需要太长时间,但我的问题是为什么需要这么长时间?我的 hosts 文件中的条目很少。

标签: php mysql pdo dns


【解决方案1】:

这可能与套接字和 MySQL 对待 localhost 的方式有关。见here

【讨论】:

    【解决方案2】:

    是否可以更多地了解逆分辨率?通常,使用“真实”名称和 IP 确实是一个更好的主意,即使它是本地连接。尝试使用服务器的主机名和 IP。

    【讨论】:

    • 反分辨率是什么意思?
    • 当您将名称转换为 IP 地址时是直接解析,而当 IP 转换为名称时则是反向解析(或反向解析,我已经以两种方式阅读过)。一些客户端-服务器通信在尝试通过请求发起连接的主机名的反向解析来检查对方时存在延迟问题。 127.0.0.1 是一个特例,它可能没有被翻译成 locahost。这就是为什么我通常更喜欢真实 IP 和名称的原因之一。