Drupal 中的远程数据库运行速度极慢

Drupal 中的远程数据库运行速度极慢

我们正在尝试扩展我们的 Drupal 安装,并决定使用一些专用的 MySQL 盒。不幸的是,当我们尝试使用远程数据库时,我们遇到了极度缓慢的问题 - 页面加载时间从约 200 毫秒缩短到 5-10 秒。

服务器之间的延迟极小——十分之一或二毫秒。

PING 10.37.66.175 (10.37.66.175) 56(84) bytes of data.
64 bytes from 10.37.66.175: icmp_seq=1 ttl=64 time=0.145 ms
64 bytes from 10.37.66.175: icmp_seq=2 ttl=64 time=0.157 ms
64 bytes from 10.37.66.175: icmp_seq=3 ttl=64 time=0.157 ms
64 bytes from 10.37.66.175: icmp_seq=4 ttl=64 time=0.144 ms
64 bytes from 10.37.66.175: icmp_seq=5 ttl=64 time=0.121 ms
64 bytes from 10.37.66.175: icmp_seq=6 ttl=64 time=0.122 ms
64 bytes from 10.37.66.175: icmp_seq=7 ttl=64 time=0.163 ms
64 bytes from 10.37.66.175: icmp_seq=8 ttl=64 time=0.115 ms
64 bytes from 10.37.66.175: icmp_seq=9 ttl=64 time=0.484 ms
64 bytes from 10.37.66.175: icmp_seq=10 ttl=64 time=0.156 ms

--- 10.37.66.175 ping statistics ---
10 packets transmitted, 10 received, 0% packet loss, time 8998ms
rtt min/avg/max/mdev = 0.115/0.176/0.484/0.104 ms

Drupal 的devel.module计时器显示远程数据库上的数据库查询运行速度没有任何降低 - 无论是本地服务器还是远程服务器,大约 150 微秒。使用 XHProf 进行分析也显示 PHP 执行时间没有失控。

查询的数量似乎没有什么区别——无论一个页面有 12 个查询还是 250 个查询,我们似乎都有相同的 5-10 秒的延迟。

关于我应该从哪里开始进行故障排除,有什么建议吗?我很困惑。

答案1

似乎由于其他原因,您与数据库的连接速度很慢。简单的命令行连接有多快?(即非 php)

我主要怀疑是远程或本地服务器上的 DNS 查找失败(=超时);正向和反向查找。

这一页:启动 mysqld--skip-name-resolve

如果这没有帮助,我将开始分析 tcp 连接(tcpdump/wireshark)以隔离问题。(我首先想到的是:本地 DNS 查找、防火墙问题(某处的 NAT 盒过载?)、某处的链接上出现数据包丢失,..)

当这个问题解决后,您可能还想确保在 PHP 中拥有持久的 DB 连接。

答案2

原因可能是在 MySQL 服务器中使用名称解析时增加了延迟。对于每个连接,mysql 都会检查客户端的 DNS 名称,这将大大增加延迟。

如果您的 my.cnf 中有此行​​,您可以检查是否属于这种情况skip-name-resolve。如果没有,请添加此行,重新启动服务器并重试。

相关内容