Drupal 中的远程数据库极其缓慢

cee*_*yoz 4 mysql database drupal database-performance

我们正在尝试扩展我们的 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
Run Code Online (Sandbox Code Playgroud)

Drupal 的devel.module计时器显示数据库查询在远程数据库上的运行速度并没有变慢——无论是本地服务器还是远程服务器,都大约 150 微秒。使用 XHProf 进行分析显示 PHP 执行时间也正常。

查询次数似乎没有什么区别 - 无论页面有 12 个查询还是 250 个查询,我们似乎都延迟了 5-10 秒。

关于我应该从哪里开始故障排除的任何建议?我很困惑。

Jor*_*ris 5

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

我的主要嫌疑人将在远程或本地服务器上失败(= 超时)dns 查找;正向和反向查找。

从此页面:使用--skip-name-resolve启动 mysqld

如果这没有帮助,我将开始分析 tcp 连接(tcpdump/wireshark)以隔离问题。(在我的脑海中:本地 dns 查找、防火墙问题(某处 NAT 盒过载?)、某处链接上的丢包,..)

解决此问题后,您可能还想确保在 PHP 中具有持久的数据库连接。