【问题标题】:Laravel Illuminate\Contracts\Http\Kernel response in index.php takes over a second to executeindex.php 中的 Laravel Illuminate\Contracts\Http\Kernel 响应需要一秒钟才能执行
【发布时间】:2016-04-17 11:58:10
【问题描述】:

我一直在运行一些基准测试来找出我的应用程序运行速度极慢的原因。我们的应用程序在 ec2 m3 实例上运行,并在 RDS 上使用 mysql 数据库。起初我以为这与 RDS 或配置错误有关。但是当我开始在代码中进行时间检查时,我得出的结论是,与我的代码一样优化 - 显然 laravel 内核本身需要很长时间才能执行。

在我的一个主控制器中,控制器内所有代码的平均执行时间约为 200 - 175 毫秒。

但是页面加载需要花费 1.3 秒的时间!控制器的代码肯定没有错,所以我认为一定是其他原因导致了问题,所以我对 Laravel 应用程序公共目录中 index.php 文件中的基本代码进行了基准测试,发现创建 Illuminate\Contracts\Http \Kernel 对象和获取/发送响应单独花费了 1120 毫秒!

<?php
require __DIR__.'/../bootstrap/autoload.php';

$app = require_once __DIR__.'/../bootstrap/app.php';
// FROM HERE ->
$kernel = $app->make('Illuminate\Contracts\Http\Kernel');


$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

$response->send();
//<--to here takes 1120 ms of which 200 ms is my code in the controller

$kernel->terminate($request, $response);

我假设这是一个框架问题,但我该如何克服这个问题 - 平均一秒的响应时间在这里是不可接受的。

【问题讨论】:

    标签: laravel optimization amazon-ec2 laravel-5 amazon-rds


    【解决方案1】:

    这可能有成千上万的原因。您应该做的是分析您的代码以验证需要这么长时间。

    但我首先要考虑的是数据库连接和执行的查询。例如,如果您执行 10 个查询并且每个查询需要 100 毫秒,则查询执行将需要 1 秒,因此您可能总共需要 1.3 秒,这并不奇怪。

    所以你应该验证你的代码到底发生了什么,验证简单控制器操作的执行时间(例如只返回一些字符串),验证加载了哪些提供程序等,因为每一个这样的事情都会影响总体性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 2018-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多