【问题标题】:Laravel request/response time very slow on Docker Laravel 8Docker Laravel 8 上的 Laravel 请求/响应时间非常慢
【发布时间】:2021-12-09 22:12:18
【问题描述】:

有人知道为什么我的 Laravel 项目的请求时间运行得很慢吗?我在 Docker 上运行该项目,我使用 Dockerfile 和 docker-compose.yml。我也在用 nginx

我尝试了多种方法,例如 Eager loading 和 artisan optimization,但这些方法似乎都不起作用。

我在配备 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

【问题讨论】:

  • 您的主机操作系统是什么?我没有看到 Dockerfile 中COPYs 应用程序进入映像的部分;它失踪了吗?您是否需要所有这些操作系统级别的包,或者您是否可以删除一些不必要的包(您的应用程序代码如何使用githtopnano)?

标签: php laravel docker docker-compose laravel-8


【解决方案1】:

这并不慢。

1.7 秒内 20MB 大约是 12MB/s,开销非常快。

您正在访问的路线正在返回大量数据,可能超出您的预期,这就是它看起来运行缓慢的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-01
    • 1970-01-01
    • 2020-11-12
    • 1970-01-01
    • 2021-06-25
    • 2021-05-19
    • 2014-08-06
    • 2015-10-17
    相关资源
    最近更新 更多