我有两个几乎相同的虚拟机,除了主机名和不重要的东西(据我所知)。
在这些虚拟机上我运行nginx/1.14.2作为代理阿帕奇/2.4.38它背后的网络服务器包括php-7.4.28和mysql-5.7.37。
我什至将 php 和 mysql、nginx 和 apache vhost 的配置文件从一台机器复制到另一台机器。
phpinfo();
如果我调用包含内容或静态 html 文件的站点,则在两台虚拟机上,网络服务器都运行良好。在两台虚拟机上,在线商店系统(openmage)运行良好。
但在一台虚拟机上,另一台在线商店系统 (shopware6) 非常慢(= 响应时间长达 60 秒)。在另一个虚拟机上它运行良好。
由于我在相同的操作系统(debian/buster)上使用相同的版本和相同的配置,所以我不知道是什么原因导致了问题。
有什么想法或建议吗?
如果需要,我可以提供任何进一步的配置详细信息。
谢谢你!
更新:
我看了不同的事情:
- CPU时间:102毫秒
- 挂钟时间:90 秒
- 关闭mysql没有什么区别
- 避免代理没有什么区别
- cli-execution 也需要很长时间
来自非工作机器的 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
答案1
我找到了问题的原因。
正如@gerhardd。正确提及:我没有复制网络设置。所以可能存在差异,而且确实如此!
在慢速服务器上配置了搜索域。安装的 php 脚本包括尝试连接到域名为“_placeholder.test”的 mysql 服务器的部分。由于“_placeholder.test”不是 FQDN,因此它会附加搜索域后缀。搜索域 dns-records 提供解析为实际服务器的通配符条目。该服务器丢弃了禁止的请求,而不是拒绝它们。所以脚本必须等待超时然后继续。
在快速服务器上,没有配置搜索域。所以它找不到“_placeholder.test”的服务器并且没有等待任何响应。该脚本随后立即执行。