诊断响应时间

时间:2016-08-09 18:43:24

标签: angularjs laravel optimization developer-tools

我没有太多的经验来诊断更长响应时间的来源,所以我很想知道更有经验的一些方法。

我有一个简单的分页记录索引页面,每次点击加载新页面时,它都表示25条记录的响应时间略长于300毫秒。拉取记录的查询并不复杂,可能300毫秒也不长。但是我仍然想知道如何找到占据大部分时间的东西,因为它感觉它需要花费一些时间。

我可以使用哪些工具或方法来找出任何瓶颈?提前谢谢。

1 个答案:

答案 0 :(得分:1)

DebugBar是一种很好的方式,可以更好地了解Laravel App的执行情况。它将打破所有SQL查询并提供计时。

除了DebugBar之外,添加一个简单的Benchmarking类是我经常使用的另一种策略。要执行此操作,请在应用程序的最开始处启动计时器。这是我过去使用过的一个示例类(进行了一些调整,但没有测试下面的代码):

<?php

class Benchmark
{
    public static $events = [];

    public static function start()
    {
        static::$events = [];
        static::bench('start');
    }

    public static function end()
    {
        static::bench('end');
    }

    public static function bench($event)
    {
        static::$events[$event] = static::time();
    }

    public static function time()
    {
        list($msec, $sec) = explode(" ", microtime());
        return ($msec+$sec) - static::$events['start'];
    }

    public static function report()
    {
        print_r(static::$events);
    }
}

实施将是:

Benchmark::start();
Benchmark::bench('finished big query');
Benchmark::end();

然后在执行结束时在某处打印出基准:

<?php Benchmark::report() ?>

检查MySQL

大多数情况下,减速是数据库。

如果您发现特定查询减慢了页面加载速度,请使用MySQL slow query log进一步隔离问题,使用MySQL explain命令剖析查询以进行改进。