我有 2 个几乎相同的虚拟机,除了主机名和不重要的东西(据我所知)。
在这些虚拟机上,我运行nginx/1.14.2作为代理,后面有一个Apache/2.4.38网络服务器,包括php-7.4.28和mysql-5.7.37。
我什至将配置文件从 php 和 mysql、nginx 和 apache vhost 从一台机器复制到另一台机器。
phpinfo();
如果我用内容或静态 html 文件调用站点,则在两个 VM 上,网络服务器都运行良好。在两个虚拟机上,在线商店系统(openmage)运行良好。
但是在一个 VM 上,另一个在线商店系统 (shopware6) 非常慢(= 响应时间长达 60 秒)。在另一个虚拟机上运行良好。
由于我在相同配置的相同操作系统(debian/buster)上使用相同版本,我不知道是什么导致了问题。
有什么想法或建议吗?
如果需要,我可以提供任何进一步的配置细节。
谢谢!
更新:
我看了不同的东西:
- 中央处理器时间:102 毫秒
- 挂钟时间:90秒
- 关闭mysql没有任何区别
- 避免代理没有任何区别
- cli执行也需要很长时间
来自非工作机器的 vmstat:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 1792 2250052 381472 1175636 0 0 100 407 162 337 2 0 98 0 0
0 0 1792 2250140 381472 1175636 0 0 0 0 105 134 0 0 100 0 0
0 0 1792 2250140 381472 1175636 0 0 0 0 73 101 0 0 100 0 0
来自工作机器的 vmstat:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 1792 1709948 321864 1311356 0 0 14 68 151 262 0 0 99 0 0
0 0 1792 1709908 321864 1311356 0 0 0 0 287 482 0 0 100 0 0
0 0 1792 1709908 321864 1311356 0 0 0 0 282 493 0 1 100 0 0
我找到了问题的原因。
作为@gerhardd。正确提到:我没有复制网络设置。因此,可能存在差异,而且确实如此!
在慢速服务器上配置了搜索域。并且安装的 php-script 包含一个尝试连接到具有域的 mysql-server 的部分:“_placeholder.test”。由于“_placeholder.test”不是 FQDN,它会附加搜索域后缀。搜索域 dns-records 提供解析为实际服务器的通配符条目。此服务器丢弃了禁止的请求,而不是拒绝它们。所以脚本必须等待超时然后继续。
在快速服务器上,没有配置搜索域。所以它找不到“_placeholder.test”的服务器,也没有等待任何响应。该脚本随后立即执行。