【发布时间】:2015-10-20 18:29:12
【问题描述】:
我最近从旧的 Windows 计算机升级到了 gen。 4 I7 Ubuntu 15.04
运行起来就像做梦一样,嗯...除了任何涉及数据库的 Laravel 工匠命令需要一百万年才能完成,而我的旧计算机在几秒钟内执行任何这些命令。
主要区别在于,我将 MySQL 作为本地服务运行,而不是 XAMPP。
此外,在我的旧计算机上,我可以看到迁移如何缓慢地显示在屏幕上,因为它们似乎正在被处理,而现在,大约需要 2 到 5 分钟,完成后,整个迁移列表会立即显示。 这可能表明某处存在某种瓶颈。
在互联网的某个地方,有人说使用 '127.0.0.1' 而不是 'localhost',因为DSN 分辨率。没解决。
为了确保这不是我遇到的问题
$time = microtime(true);
//also with host=127.0.0.1
new PDO("mysql:host=localhost;dbname=some_db", "username", "password");
//some simple queries here...
//yielded similar marginal times
echo microtime(true) - $time;
~半拍
编辑
我从框架中收集了每个查询的运行时间,我有 LOTS 的迁移,分析数据我发现没有什么异常慢(比如运行一分钟的查询)。
Here's a link with the data。实际询问被省略了,有利于我的雇主。
虽然有许多查询运行一秒或更长时间,但最慢的 number 221 需要 3.5 秒。
我有大约一百次迁移(我知道),但问题是,如果每次迁移需要一秒钟,我会等待大约一分半钟才能迁移,但通常需要 4 到 5 分钟。
根据 Oliverpool 的建议,我通过终端在 mysql 上重放查询进行了一些分析,但我从来不需要等待超过一秒,平均查询需要大约一秒。
这是最慢查询的分析图片(迁移时间为 3.5 秒,图片中不到一秒)
也许这指向连接?顺便说一下,运行迁移后慢查询日志为空。
另外,我现在使用的是 laravel 5,行为是一样的。我不知道如何解决连接问题,所以我想一些谷歌搜索是为了,欢迎任何建议。
提前致谢。
【问题讨论】:
-
你能不能在 mysql 客户端运行一些查询来确保不是 MySQL 速度慢。另外,运行
php -v以确保不是 PHP 速度慢。 -
你确定你的 Laravel 数据库配置是正确的吗?也许你可以做一些分析,看看哪些查询是由工匠执行的,然后重放它们。
-
请检查您的旧 Windows mysql.ini 以及新的 ubuntu mysql.ini。他们应该有不同的配置。检查缓冲区大小.. 这些文章可能会有所帮助 dba.stackexchange.com/questions/27328/… dev.mysql.com/doc/refman/5.5/en/server-parameters.html
-
实际上可能与
php-cli相关,因为您说mysql 分析返回了最佳时间结果。我建议您比较从控制台和浏览器执行 php 脚本的时间。php -q test.phppastebin.com/AwNJk33n 在我的例子中,cli 结果大约是0.076和 web 结果大约是0.009 -
运行迁移 24 小时然后运行 mysqltuner 并修复你的 my.cnf 默认 ubuntu 配置是垃圾。我遇到了完全相同的问题,在 Windows 上的 wamp 上运行良好,交换到 linux 并且对于某些工作来说速度很慢。在我的情况下,它是内核上的文件句柄标志,并且没有为 innodb 分配足够的缓冲区,因此它全部在磁盘 IO 中而不是在 ram 中完成。
标签: php mysql laravel database-connection