Laravelのレスポンスがやたらと遅い
解決したいこと
Laravelのレスポンスがやたらと遅いのを解決したい。
早くても5秒ほどかかる。
発生している問題・エラー
環境
Windows 10
Docker Engine v20.10.16
PHP 8.0
Laravel 8
Dockerで以下のような構成で開発しています。
- Laravel
- Nuxt
- MySQL
- Nginx
version: "3"
services:
web:
build:
context: .
dockerfile: ./docker/nginx/Dockerfile
args:
- TZ=${TZ}
volumes:
- ./docker/nginx/logs:/etc/nginx/logs
- ./docker/nginx/conf.d:/etc/nginx/conf.d
- ${PROJECT_PATH}:/var/www/laravel
ports:
- ${WEB_PORT}:80
links:
- app
depends_on:
- app
app:
build:
context: .
dockerfile: ./docker/php/Dockerfile
args:
- TZ=${TZ}
volumes:
- ${PROJECT_PATH}:/var/www/laravel
links:
- db_master
environment:
- DB_CONNECTION=${DB_CONNECTION}
- DB_HOST=db_master
- DB_DATABASE=${DB_NAME}
- DB_USERNAME=${DB_USER}
- DB_PASSWORD=${DB_PASS}
- TZ=${TZ}
- MAIL_HOST=${MAIL_HOST}
- MAIL_PORT=${MAIL_PORT}
db_master:
image: mysql:5.7
environment:
- MYSQL_DATABASE=${DB_NAME}
- MYSQL_USER=${DB_USER}
- MYSQL_PASSWORD=${DB_PASS}
- MYSQL_ROOT_PASSWORD=${DB_ROOT_PASS}
- TZ=${TZ}
ports:
- ${DB_PORT}:3306
front_app:
build:
context: .
dockerfile: ./docker/node/Dockerfile
args:
- TZ=${TZ}
volumes:
- ./nuxt:/var/www/nuxt
- node_modules_volume:/var/www/nuxt/node_modules
ports:
- ${FRONT_PORT}:3001
links:
- web
depends_on:
- web
volumes:
node_modules_volume:
どれくらい遅いか
api.phpに以下のように、文字列を返すだけのルーティングを追加してレスポンスの時間を隠してみましたところ、画像のように6秒以上かかりました。(chromeから直接アクセス。Nuxtの画面は使用せずです。)
Route::get('test', function () {
return 'test';
});
NuxtのプロジェクトからLaravelにAPIのリクエストを投げると、preflightでも10秒ほどかかり、1ページの読み込みが20秒以上かかったりしてしまいます。
試したこと
- コンテナ、ボリュームを削除して
docker compose up -d --build
でビルドし直す。 - Laravelのプロジェクトを削除してから新しくプロジェクトを作成
- Docker Desktopのアップデート
いずれもだめでした。
どうやって調べればよいか。。。
Dockerはアップデートしたり、ビルドし直したりして改善されなかったので、Dockerが原因ではないと考えています。
Laravelも新規にプロジェクトを作成して試して改善されなかったので、Laravelの設定関係でもないと考えています。
chromeから直接アクセスして遅かったので、Nuxtの設定関係が原因でもないと考えています。
次に何を疑えばよいか、どう調べて行けばよいか、途方にくれている状況です。
同じような現象を経験された方や知見のある方のご意見をお伺いしたく質問させていただきました。
どうぞよろしくお願いいたします。