首页 » 网站建设 » phplaravel拜访速度技巧_Laravel 应用机能调优经历

phplaravel拜访速度技巧_Laravel 应用机能调优经历

访客 2024-12-15 0

扫一扫用手机浏览

文章目录 [+]

APP_DEBUG=false2. 缓存配置信息

php artisan config:cache

运行以上命令可以把 config 文件夹里所有配置信息合并到一个 bootstrap/cache/config.php 文件中,减少运行时载入文件的数量。

php artisan config:clear

运行以上命令可以打消配置信息的缓存,也便是删除 bootstrap/cache/config.php 文件

phplaravel拜访速度技巧_Laravel 应用机能调优经历

3. 缓存路由信息

php artisan route:cache

运行以上命令会天生文件 bootstrap/cache/routes.php。
路由缓存可以有效的提高路由器的注册效率,在大型运用程序中效果越加明显。

phplaravel拜访速度技巧_Laravel 应用机能调优经历
(图片来自网络侵删)

php artisan route:clear

运行以上命令会打消路由缓存,也便是删除 bootstrap/cache/routes.php 文件。

4. 类映射加载优化

php artisan optimize --force

运行以上命令能够把常用加载的类合并到一个文件中,通过减少文件的加载来提高运行效率。
这个命令会天生 bootstrap/cache/compiled.php 和 bootstrap/cache/services.json 两个文件。

通过修正 config/compile.php 文件可以添加要合并的类。

在生产环境中不须要指定 --force 参数文件也可以自动天生。

php artisan clear-compiled

运行以上命令会打消类映射加载优化,也便是删除 bootstrap/cache/compiled.php 和 bootstrap/cache/services.json 两个文件。

5. 自动加载优化

composer dumpautoload -o

Laravel 运用程序是利用 composer 来构建的。
这个命令会把 PSR-0 和 PSR-4 转换为一个类映射表来提高类的加载速率。

把稳:php artisan optimize --force 命令里已经做了这个操作。

6. 根据须要只加载必要的中间件

Laravel 运用程序内置了并开启了很多的中间件。
每一个 Laravel 的要求都会加载干系的中间件、产生各种数据。
在 app/Http/Kernel.php 中注释掉不须要的中间件(如 session 支持)可以极大的提升性能。

7. 利用即时编译器

HHVM 和 OPcache 都能轻轻松松的让你的运用程序在不用做任何修正的情形下,直接提高 50% 或者更高的性能。

8. 利用 PHP 7.x

只能说 PHP 7.x 比起之前的版本在性能上有了极大的提升。

二、 测试方案1. 未做任何优化1.1 操作按照以下检讨项实行相应的操作。
运行 ab -t 10 -c 10 http://myurl.com/index.php

根本检讨项

.env 文件中 APP_DEBUG=true不存在 bootstrap/cache/config.php不存在 bootstrap/cache/routes.php不存在 bootstrap/cache/compiled.php 和 bootstrap/cache/services.jsonapp/Http/Kernel.php 中开启了大部分的中间件浏览器访问 Laravel 运用程序欢迎页确保正常访问

2. 关闭运用debug2.1 操作在步骤 1 根本上修正 .env 文件中 APP_DEBUG=false。
浏览器访问 Laravel 运用程序欢迎页确保正常访问。
运行 ab -t 10 -c 10 http://myurl.com/index.php。
2.2 数据记录

2.3 比拟结果

与步骤 1 结果比较创造:关闭运用 debug 之后,每秒处理要求数从 26-34 上升到 33-35,要求相应韶光从 大部分 300ms 以高下降到 290ms 旁边,效果不太明显,但确实有一定的提升。

把稳:这部分与运用中的日志等利用情形有比较大的关联。

3. 开启缓存配置信息3.1 操作在步骤 2 根本上,运行 php artisan config:cache,确认天生 bootstrap/cache/config.php。
浏览器访问 Laravel 运用程序欢迎页确保正常访问。
运行 ab -t 10 -c 10 http://myurl.com/index.php。
3.2 数据记录

3.3 比拟结果

与步骤 2 结果比较创造:开启配置信息缓存之后,每秒处理要求数从 33-35 上升到 36-38,要求相应韶光从 290ms 旁边低落到 260ms 旁边,效果不太明显,但确实有一定的提升。

4. 开启缓存路由信息4.1 操作在步骤 3 根本上,运行 php artisan route:cache,确认天生 bootstrap/cache/routes.php。
浏览器访问 Laravel 运用程序欢迎页确保正常访问。
运行 ab -t 10 -c 10 http://myurl.com/index.php。
4.2 数据记录

4.3 比拟结果

与步骤 3 结果比较创造:开启路由信息缓存之后,每秒处理要求数从 36-38 上升到 60 旁边,要求相应韶光从 260ms 低落到 160ms 旁边,效果显著,从 TPS 看,提升了 70%。

5. 删除不必要的中间件5.1 操作在步骤 4 根本上,注释掉不必要的中间件代码。
浏览器访问 Laravel 运用程序欢迎页确保正常访问。
运行 ab -t 10 -c 10 http://myurl.com/index.php。

把稳:这次测试中我注释掉了所有的中间件。
实际情形中该当只管即便只留下必要的中间件。

5.2 数据记录

5.3 比拟结果

与步骤 4 结果比较创造:删除了不必要的中间件之后,每秒处理要求数从 60 旁边上升到 90 旁边,要求相应韶光从 160ms 低落到 110ms 旁边,效果非常明显,从 TPS 看,提升了 50%。

6. 开启类映射加载优化6.1 操作在步骤 5 根本上,运行 php artisan optimize --force,确认天生 bootstrap/cache/compiled.php 和 bootstrap/cache/services.json。
浏览器访问 Laravel 运用程序欢迎页确保正常访问。
运行 ab -t 10 -c 10 http://myurl.com/index.php。
6.2 数据记录

6.3 比拟结果

与步骤 5 结果比较创造:做了类映射加载优化之后,每秒处理要求数从 90 上升到 110,要求相应韶光从 110ms 低落到 100ms 以下,效果还是比较明显的。

7. 关闭 OPcache7.1 操作在步骤 6 根本上,关闭 PHP 的 OPcache,并重启做事器。
通过 phpinfo() 的 Zend OPcache 确认 OPcache 已经关闭。
浏览器访问 Laravel 运用程序欢迎页确保正常访问。
运行 ab -t 10 -c 10 http://myurl.com/index.php。
7.2 数据记录

7.3 比拟结果

与步骤 6 结果比较创造:关闭 OPcache 之后,每秒处理要求数从 110 低落到 15,要求相应韶光从 100ms 以下上升到 650ms 以上。
开启与关闭 OPcache,数据上竟有几倍的差别。

此后,我重新开启了 PHP 的 OPcache,数据规复到步骤 6 水平。

踩过的坑1. [LogicException] Unable to prepare route [/] for serialization. Uses Closure.

在运行 php artisan route:cache 命令时报这个缺点。

缘故原由:路由文件中处理“/”时利用了闭包的办法。
要运行该命令,路由的详细实现不能利用闭包办法。

修正方案:将路由的详细实现放到掌握器中来实现。

2. [Exception] Serialization of 'Closure' is not allowed.

在运行 php artisan route:cache 命令时报这个缺点。

缘故原由:路由文件中定义了重复的路由。

修正方案:排查路由文件中的重复路由并修正。
尤其要把稳 resource 方法很可能导致与其方法重复。

3. [RuntimeException] Invalid filename provided.

在运行 php artisan optimize --force 命名时报这个缺点。

缘故原由:在加载须要编译的类时没有找到相应的文件。
5.2 版本的 vendor/laravel/framework/src/Illuminate/Foundation/Console/Optimize/config.php 中定义了要编译的文件路径,但不知道为什么 /vendor/laravel/framework/src/Illuminate/Database/Eloquent/ActiveRecords.php 没有找到,以是报了这个缺点。

修正方案:暂时注释掉了以上 config.php 中的 ../ActiveRecords.php 一行。

实践技巧1. 有效的 Laravel 运用程序优化技巧关闭运用debug app.debug=false缓存配置信息 php artisan config:cache缓存路由信息 php artisan router:cache类映射加载优化 php artisan optimize(包含自动加载优化 composer dumpautoload)根据须要只加载必要的中间件利用即时编译器(JIT),如:HHVM、OPcache2. 编写代码时把稳事变路由的详细实现放到掌握器中。
不定义重复的路由,尤其把稳 resouce 方法。
弄清各中间件的浸染,删除不必要的中间件引用。

转自:@精进吧Aaron

标签:

相关文章