我正在运行 PHPUnit 来使用 CIUnit(两者之间的第三方接口)测试 CodeIgniter 应用程序。许多测试从空的 MySQL 数据库中选择数据,该数据库在 setUp() 中填充了 5-10 条记录。在 Windows 和 Web 服务器(Ubuntu 10.04/Apache 2.2/MySQL 5.1/PHP 5.3)上,105 个测试在 2-3 秒内运行,内存使用量约为 30mb。在我的本地(Ubuntu 12.04/Apache 2.2/MySQL 5.5/PHP 5.3)上,105 个测试以相同的内存使用情况运行,但大约需要 45 秒。
我已将缓慢的范围缩小到使用数据库的测试;是否有任何我可能遗漏的配置设置导致测试运行速度慢了 15 倍?如果没有,我最好的选择是尝试降级 MySQL,甚至是 Ubuntu(我已经尝试从 12.10 降级到 12.04)?
任何答案都非常感激。
您很可能会遇到由以下原因造成的性能影响barriers默认为 https://ext4.wiki.kernel.org/index.php/Ext4_Howto#Barriers_on_by_default在 ext4 文件系统中。在这里阅读更多内容:
这就是他们所做的从文档 https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/ext4.rst:
屏障=
jbd 代码。 Barrier=0 禁用,Barrier=1 启用。这也是
需要一个可以支持屏障的 IO 堆栈,并且如果 jbd 获得
屏障写入时出错,它将再次禁用并发出警告。写
障碍强制执行日志提交的正确磁盘排序,使得
易失性磁盘写入缓存可以安全使用,但会带来一些性能损失。
如果您的磁盘以一种或另一种方式由电池供电,请禁用
障碍可以安全地提高绩效。
您可以尝试在没有它们的情况下重新挂载文件系统,如下所示(使用 mysql 数据文件所在的挂载点)
mount -o remount,nobarrier /
在我的环境中,这使得Tests: 83, Assertions: 194
套件的运行时间从 48 秒减少到 6 秒。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)