【问题标题】:Laravel, api call slow first time (repeated call after 5s)Laravel,api第一次调用慢(5s后重复调用)
【发布时间】:2021-10-28 01:41:05
【问题描述】:

我在 Vagrant+Puppet LAMP(2x 内核,2.5GB)堆栈上工作,我在其中开发基于 Laravel ver.8 的 API。 有一个默认设置、JWT 中间件和几乎是最低限度的(也可以尝试使用相同行为的全新安装)。第一次调用后,响应时间约为 6 秒。如果我调用同一个 API 端点,响应时间是 200 毫秒。在 3 秒间隔内的每个进一步调用都很快。如果我暂停调用> 3s然后再次调用,响应时间再次变慢大约6s。

我为解决这个问题所做的尝试:

php artisan cache:clear
composer dump-autoload -a --apcu
php artisan config:cache
php artisan session:table
php artisan migrate

.env:
APP_DEBUG=false
SESSION_DRIVER=database
SESSION_LIFETIME=120
CACHE_DRIVER=memcached
MEMCACHED_HOST=127.0.0.1
MEMCACHED_PORT=11217

顺便说一句,api调用只返回:return response()->json(['tst']);当我输出 phpinfo();从index.php来看,响应时间是每次(暂停到)大约70ms。

还尝试通过 Xdebug 使用 CacheGrind 调试调用:XDEBUG_PROFILE=1。以下是分析结果:https://filebin.net/izs3qm0gm3gt8jq6

我刚刚提到自动加载器需要更长的时间,但无法比较结果。有什么办法可以解决这个问题吗?

提前谢谢你。

【问题讨论】:

    标签: php laravel laravel-8


    【解决方案1】:

    设置时钟,以便您在尝试达到某个终点时分析所有活动

    只需运行

    composer require itsgoingd/clockwork

    你会得到一个这样的界面来检查所有的数据

    另一种选择是使用 laravel 望远镜 https://laravel.com/docs/8.x/telescope 但这需要建立数据库并记录数据库上的所有日志,而且我个人喜欢发条,

    但两者都应该告诉你你的设置有什么问题

    【讨论】:

    • 实际上我已经安装了所有 3x + DevToolbar。没有比分析器输出更多的输出。因此,我将它们添加到我的问题中,因为在某些过程中存在明显的跳跃。
    • 感谢您指出这种方法。安装后,这更清楚地表明处理时间不是响应慢的错。仅作记录,原因是我的本地环境的 DNS 查找时间较长。由于未知原因,如上所述。我将不得不为它找出一个解决方案,但也许设置直接 IP->虚拟主机就可以了。
    【解决方案2】:

    原因是 Vagrant box 上的 DNS 查找很长 - 而不是 Laravel 或它的任何其他部分。

    【讨论】:

      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-13
      • 2021-08-01
      • 2021-02-01
      • 2017-05-23
      相关资源
      最近更新 更多