PHP Laravel WebApp启动时间>15秒

2skhul33  于 12个月前  发布在  PHP
关注(0)|答案(2)|浏览(173)

我在我的网站上运行了一个laravel应用程序。自从我将数据库中的一个表“places”扩展到大约12 GB大小后,HomePage的启动时间急剧增加到~12秒,SearchPage查询“places”表的启动时间增加到~15秒。
下面的2张图片来自主页的图片栏
Image from HomePage DebugBar Timeline
Image from HomePage DebugBar Queries
下面的2张图片来自SearchPage的搜索栏
Image from SearchPage DebugBar Timeline
Image from SearchPage DebugBar Queries
我还可以看到,当我在根文件夹的终端运行php artisan时,它需要大约10秒才能显示结果
对于上面的图片,我们可以得出结论,数据库查询并不需要很长时间,尽管大小。只是引导时间占用了页面加载时间的更大部分。
但是,当我将数据库更改为小数据库时,启动时间又回到了<1秒。
我尝试了基本的优化方法,包括php artisan optimize和检查是否启用了OPCache
下面是数据库的配置:https://justpaste.it/csgo2
SELECT COUNT(*) FROM information_schema.tables; SHOW GLOBAL STATUS; SHOW GLOBAL VARIABLES;
有什么建议吗?

已编辑

这是由这两件事决定的-
1.删除引导期间运行的SQL(*)查询
1.在数据库表上添加PHPMyAdmin中的索引

ecbunoof

ecbunoof1#

需要花费大量时间的查询是:

SELECT * FROM 'places' WHERE category LIKE '%2184%' AND city_id= 1 LIMIT 16 OFFSET 0;

字符串
我最好的猜测是category字段没有索引。看看你的places表是否为category使用了索引。
如果你的category字段使用多个类别id,看看你是否可以使用多对多的表来代替。这将提高性能。
如果category字段只使用category_id,看看是否可以将其设置为外键,这将自动索引该列并提高性能。
如果该列可以引用多个表,但每个记录只引用一个id,那么创建一个索引。这也会提高性能。
由于您还没有描述表的定义,因此这些是我最好的猜测。
你还提到你的php artisan很慢。你确定你没有在__constructor中执行数据库查询(直接或间接)吗?因为这将是一个错误。你的构造函数只是构建你的类,而不是查询数据或运行任何业务逻辑。

9w11ddsr

9w11ddsr2#

如果你在开发模式下运行,我可以理解,但如果你在生产模式下运行,这可能是你的应用程序的一个严重问题。
在.env文件集中:

APP_DEBUG=true
   APP_ENV=production

字符串
你能跑吗:

composer install --optimize-autoloader --no-dev
php artisan config:cache
php artisan view:cache
php artisan route:cache
php artisan event:cache


所有这些命令,只是为了比较是否有重大变化。

相关问题