簡體   English   中英

Laravel 請求/響應時間非常慢 Docker Laravel 8

[英]Laravel request/response time very slow on Docker Laravel 8

有誰知道為什么我的 Laravel 項目的請求時間運行得很慢? 我在 Docker 上運行項目,我使用 Dockerfile 和 docker-compose.yml。 我也在使用 nginx

我嘗試了多種方法,例如 Eager loading 和 artisan optimize ,但這些方法似乎都不起作用。

我在配備 i7-9750H 和 16gb RAM 的筆記本電腦上運行它。

這就是我的調試欄所說的:

這就是我的調試欄所說的

Dockerfile 在名為“php”的文件夾中:

FROM php:8.0-fpm-alpine

RUN apk add shadow && usermod -u 1000 www-data && groupmod -g 1000 www-data

RUN chmod 777 /dev/stdout /dev/stderr

RUN apk --update add wget \
  curl \
  git \
  grep \
  build-base \
  libmcrypt-dev \
  libxml2-dev \
  zlib-dev \
  autoconf \
  cyrus-sasl-dev \
  libgsasl-dev \
  composer \
  supervisor \
  libpng-dev \
  freetype-dev \
  libjpeg-turbo-dev \
  libjpeg-turbo-utils \
  openssh \
  htop \
  nano \
  ghostscript \
  imagemagick-dev \
  libzip-dev \
  wkhtmltopdf \
  jpegoptim \
  optipng \
  pngquant \
  pngcrush \
  gifsicle \
  bash

RUN apk add --update --no-cache graphviz font-bitstream-type1

RUN echo '* * * * * php /var/www/html/artisan schedule:run' | crontab -u www-data -
RUN rm -rf /var/spool/cron/crontabs/root

RUN docker-php-ext-install mysqli pdo pdo_mysql tokenizer xml zip exif
RUN pecl channel-update pecl.php.net \
    && pecl install redis \
    && rm -rf /tmp/pear \
    && docker-php-ext-enable redis \
    && docker-php-ext-install gd \
    && docker-php-ext-install -j$(nproc) iconv \
    && docker-php-ext-configure gd \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install bcmath

# install imagick
# use github version for now until release from https://pecl.php.net/get/imagick is ready for PHP 8
RUN mkdir -p /usr/src/php/ext/imagick \
    && curl -fsSL https://github.com/Imagick/imagick/archive/06116aa24b76edaf6b1693198f79e6c295eda8a9.tar.gz | tar xvz -C "/usr/src/php/ext/imagick" --strip 1 \
    && docker-php-ext-install imagick

RUN rm /var/cache/apk/* && \
    mkdir -p /var/www && \
    chown www-data:www-data /var/www -R

CMD ["/usr/bin/supervisord", "-n", "-c",  "/etc/supervisord.conf"]

USER www-data

RUN composer global require laravel/envoy

ENV PATH "$PATH:/home/www-data/.composer/vendor/bin"

Dockerfile 在名為“nginx”的文件夾內:

FROM nginx:alpine

docker-compose.yml

version: "3"
services:

  php:
    volumes:
      - './src/:/var/www/html'
      - './.docker/php/supervisor.conf:/etc/supervisord.conf'
    tty: true
    build:
      context: .
      dockerfile: .docker/php/Dockerfile
    links:
      - "db:database"
      - "redis:redis"
    networks:
      internal:
      traefik:

  nginx:
    image: nginx:alpine
    volumes:
      - './src:/var/www/html'
      - './.docker/nginx/nginx/conf.d/:/etc/nginx/conf.d/'
      - './.docker/nginx/nginx/nginx.conf:/etc/nginx/nginx.conf'
    labels:
      traefik.backend: domain.test
      traefik.frontend.rule: "Host:library.test"
      traefik.docker.network: traefik
      traefik.port: 80
    networks:
      internal:
      traefik:
    depends_on:
      - php
  db:
    image: mysql/mysql-server:latest
    environment:
      MYSQL_DATABASE: 'library'
      MYSQL_USER: 'amin'
      MYSQL_PASSWORD: 'secret'
      MYSQL_ROOT_PASSWORD: 'secret'
      DEFAULT_AUTHENTICATION_PLUGIN: 'mysql_native_password'
    volumes:
      - mysql:/var/lib/mysql:rw
      - './database:/var/data'
    networks:
      - internal
    ports:
      - "3306:3306"

  # Cache server
  redis:
    image: redis:4-alpine
    volumes:
      - redis:/data:rw
    networks:
      internal:

volumes:
  mysql:
    driver: "local"
  redis:
    driver: "local"

networks:
  traefik:
    external: true
  internal:
    external: false

這並不慢。

1.7s 中的 20MB 大約是 12MB/s,開銷非常快。

您正在訪問的路線正在返回大量數據,可能超出您的預期,這就是它看起來運行緩慢的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM