MySQL/PHP网站在服务器';升级';-PHP版本问题


MySQL/PHP site extremely slow after server 'upgrade' - PHP version issues?

我们刚刚通过托管公司从一台运行PHP 5.1和MySQL 5.1的3年双核8GB Plesk机器升级了我们的专用web服务器。

新服务器是6核8GB cPanel/WHM服务器,运行PHP 5.4和MySQL 5.5

我很抱歉,因为我不是一个聪明的程序员,但由于我们是一家小公司,我是整个IT部门!

我们的电子商务网站(基于电子商务模板的代码)现在运行非常缓慢,托管公司只能说问题出在我们的PHP/MMySQL代码上。他们告诉我,几乎每个查询都需要2秒或更长时间才能运行。

数据库有大约20000个产品和60个表。400Mb大小。

我很感激我们的代码可能有点过时,但加载一个页面真的需要20秒吗?这个页面过去只需不到2秒就可以加载,只是因为PHP/MMySQL已经"改进"了吗?

以下是通过MySQLAdmin使用EXPLAIN的示例:

将SELECT COUNT(DISTINCT products.pId)解释为条FROM products LEFT JOIN multisections ON products.pId=multisections s.pId WHERE pDisplay<>0和(产品.IN(274)部分或多部分.IN(276)部分

1 SIMPLE产品ALL NULL NULL NULL NULL 20728使用where

1 SIMPLE multisections ref PRIMARY PRIMARY 130 homesupply.products.pID 31使用where;使用索引

我在这里担心MyISAM与InnoDB、排序问题等等。

我目前唯一的选择是跳回我们的旧服务器,直到我们可以重新编码我们的网站,如果发现是一个简单的设置导致了这个问题,我会非常沮丧。

感谢

这在新的PHP中不会成为问题,这是极不可能的。问题很可能出现在MYSQL中。我建议做以下事情:

1) 重新生成所有索引。不正确升级到更新的MySQL版本可能会导致文件上的一些旧索引,您可以安全地重建所有,只需修复所有表:

mysqlcheck -p -A -r

2) 检查哪些查询速度较慢。执行以下MySQL语句查看:

SHOW FULL PROCESSLIST;

您可能需要对队列中很长的所有查询运行EXPLAIN,检查它是否在适当的地方正确地使用了索引。有时,较新的mysql版本可能不会像以前的版本那样对相同的查询使用相同的索引。如果mysql无法使用正确的索引,您可能需要将FORCE INDEX添加到查询中。

3) 检查日志文件。MySQL有一个日志文件,用于报告可能出现的问题。它的位置取决于您的设置,在我的服务器上,它位于mysql数据目录中。

4) 在MySQL中禁用DNS查找,它可能在新版本上默认启用。您可能需要在mysql配置文件中配置跳过名称解析。事实上,比较新旧配置文件可以提供一些不同的提示。

本周我遇到了这个问题。

它是IPv6

尝试完全禁用IPv6。很可能是一些本地服务/插件正在尝试IPv6连接(谷歌api等),这些连接必须在恢复到v4之前超时。

我可以访问IPv6地址空间,所以我启用了它,并将主机配置为正确使用它。