问题:迁移到新的(更好的)服务器后,网站变得非常慢,似乎与php图像呈现相关?
网站设置:Opencart 2.0.3.1,~100个产品,~10个类别。使用自定义主题和VQMod。站点由Windows Server 2012 R2(旧版和新版)上的IIS(PHP 5.6,IIS PHP管理器)托管。支持opencart的MySQL DB在同一台机器上运行。
旧机器:Pentium G2020T(2核2线程,2.5GHz),10G DDR3运行Windows服务器2012 R2。 (机载NVidia GT520卡,如果重要的话)
新机:Xeon-D 1540(8核16线程,2.0-2.6GHz),32G DDR4运行Windows Server 2012 R2(Aspeed AST2400板载视频卡,如果重要的话)
症状: 在旧设置中,站点立即加载而没有任何延迟,并且在浏览不同产品时响应非常快。但是,在新设置中,加载主页大约需要15-20秒,这同样适用于每个产品。
更多详情: 这两台服务器具有相同的软件设置。我迁移网站的方法是复制整个opencart目录,并为站点数据执行MySQL转储。我在迁移后清理了缓存目录(system / cache,vqmod / cache等)。我注意到的是,它似乎与php呈现图像有某种关系 - 任何带有图像的页面加载速度非常慢(仅在新机器上)。在加载期间," php-cgi"在新主机上,单个核心占用了大约80%的CPU时间(并且持续了大约20秒)。似乎php-gd2.dll正在吃掉所有CPU周期。
我怀疑: 我试图从Microsoft Web Platform安装程序安装一个新的opencart副本,该网站非常敏感。所以我认为它排除了任何与硬件相关的问题。这是我的嫌疑人名单和问题:
提前致谢!
答案 0 :(得分:0)
我发现了问题 - 在迁移过程中没有清除图像缓存。这导致引擎在每次请求页面时尝试创建图像缩略图。清理缓存后问题得到解决。
我还有两件事情很奇怪:
答案 1 :(得分:0)
对于sqexpress的答案,我没有50个声誉,但在Windows Server 2012 R2上使用PHP 5.4.45和7.0.7在IIS8下遇到类似的OpenCart 2.0.3.1问题。
从
更改/catalog/model/tool/image.php上的第13行if (!is_file(DIR_IMAGE . $new_image) || (filectime(DIR_IMAGE . $old_image) > filectime(DIR_IMAGE . $new_image))) {
到
if (!is_file(DIR_IMAGE . $new_image) || (filemtime(DIR_IMAGE . $old_image) > filemtime(DIR_IMAGE . $new_image))) {
解决了当原始文件是迁移到新服务器时引入的文件时,在每次页面加载时重新创建缓存文件的问题。
OpenCart最初在1.5.6.4版本中使用了filemtime。不确定何时或为何更改为filectime。