【发布时间】:2018-12-11 20:48:33
【问题描述】:
我创建了 Yii2 基本应用 https://www.yiiframework.com/doc/guide/2.0/en/start-installation 但 index.php 等待时间(TTFB)始终在 2s 左右,下载时间在 43ms 左右,并且默认应用程序的所有其他资源(CSS,JS)都已下载用 10 毫秒(从谷歌开发者工具中观察到),这很好。我在我的开发机器 Windows 10 4GHz、16GB RAM、低资源消耗上运行所有东西。
我正在添加 index.php 调用的 xDebug 分析结果:Results ordered by Incl. 和 Results ordered by Self。
可以看出,没有一个缓慢的 PHP 函数,尽管显示 50% 的 self-time 被 php::fclose 消耗,我的实验表明,注释掉这两行只会略微改善这种情况。所以 - 很难依赖 xDebug 分析。
我还尝试注释掉或更改调试设置,但这些活动也没有任何改进。
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
2 秒对于没有任何功能的应用程序来说是非常大的响应时间,并且在具有大量资源的本地计算机上运行。我们有经验,相当复杂的 Yii 应用程序在不到 0.5 秒内响应,这很好,但 2 秒是不可接受的时间。
我正在使用 XAMP、PHP 7+、Yii 2.0.14,有问题提交了https://github.com/yiisoft/yii2/issues/15776,据我了解,2.0.14 具体可能会更慢,但问题尚未得到确认。
我将同一个项目降级到 Yii 2.0.5 并在 XAMPP 下使用 PHP 5.6.23 进行了尝试,性能非常好。所有 index.php 请求都在 100 毫秒内完成(在 Yii 2.0.14 / PHP 7+ 中需要超过 2 秒)。
另一个发现 - Yii 2.0.13 基本应用程序在 XAMPP PHP 5.6 下运行速度很快,但在 XAMPP PHP 7.2 下这个相同的应用程序在超过 2 秒后返回页面。所以,性能问题可能不是 Yii2 造成的。
如何进行?还需要做什么分析?还有哪些设置要更改?
【问题讨论】:
-
正如您在链接问题中看到的那样,团队已经解决了这个问题并且能够优化代码。如果还是这样,请检查 Yii 2.0.15.1(最新)。
-
不幸的是升级到 2.0.15.1 并没有提高性能,这是可以理解的,因为 changelog github.com/yiisoft/yii2/blob/2.0.15.1/framework/CHANGELOG.md 没有提到性能改进。我用有关 Yii2 2.0.5 性能的信息补充了我的问题。
-
你确定你启用了模式缓存吗?
-
我试过开启schema缓存,但是没有结果,当然是因为我在向index.php发出最基本的请求,不使用DB,至少不能使用DB。跨度>
-
Yii 调试工具呢?它是否暗示了这段时间花在哪里? (见Logs Panel and Performance Profiling Panel here)。还可以查看在调试器的数据库查询面板中启用模式缓存后是否仍在加载 db 模式。不确定,但缓存组件可能无法正常工作。
标签: php performance yii2 profiling xdebug