网站调用数据库服务器时,Apache 服务器与 MySQL 服务器之间有 5-7 秒的延迟

网站调用数据库服务器时,Apache 服务器与 MySQL 服务器之间有 5-7 秒的延迟

我目前正在为我的 Web 和数据库服务器运行虚拟化环境。当我单独访问 Web 服务器或 MySQL 服务器时,它们都很快。我还在 Web 服务器上运行了一些不需要数据库服务器的网站,这些网站都加载得很快。但是,当我访问需要 Web 服务器从数据库服务器调用的托管网站时,每次页面加载大约有 5-7 秒的延迟。这已在一个非常简单的网站和 Word Press 设置中得到证实。以下是配置:

Web 服务器 - CentOS 6.5,Apache 2.2.15

数据库服务器 - CentOS 6.5,MySQL 5.1.73

我的问题是,服务器是否会在每次数据库调用时持续相互验证身份(从而导致延迟)?如果是这样,有人知道如何在两者之间进行永久验证吗?

我可能完全误解了这个假设,而且身份验证可能与此无关。目前,我完全愿意接受任何想法。非常感谢。

垂直/水平,

托尼

答案1

2014 年 4 月 17 日更新

DNS 确实是罪魁祸首。一旦我将每台服务器添加到其他 DNS 主机文件,延迟就消失了。具体记录一下我做了什么。

我首先转到位于两台服务器上的 /etc/hosts(请注意,是 hosts,而不是 hosts.conf)的 DNS 主机文件,并添加每台服务器:192.168.0.1 服务器 1 192.168.0.2 服务器 2

然后我转到位于 /etc/nsswitch.conf 的 nsswitch 配置文件,并确保两个配置文件(每个服务器上一个)都包含以下行:hosts:files dns

然后我 ping 了主机名,并能够解析私有 IP。延迟现在消失了!!!感谢大家的帮助和解答。

垂直/水平,

托尼


*** 旧帖子内容在这里 ***

即使是设置连接和进行身份验证,延迟也很大,Web 服务和数据库服务器是否在同一台虚拟机(同一台服务器)上?如果不是,则可能存在 DNS 解析问题。

我建议先编写最简单的 php 代码,使用 mysql_connect 连接到数据库(不持久连接),然后使用较新的 mysqli 来持久连接https://www.php.net/manual/en/mysqli.quickstart.connections.php并检查它们花费了多长时间,这将排除 Web 应用程序代码的问题。

另一个测试是转到(Web)服务器并使用 mysql 命令手动连接到数据库,看看需要多长时间。

在所有这些测试中,除了连接之外,您还可以添加执行简单的选择查询。

相关内容