簡體   English   中英

Laravel API 調用的 Docker 響應時間慢

[英]Docker Slow Response Time with Laravel API calls

Docker 響應時間

有誰知道為什么使用 docker 時響應時間最多需要 1500 毫秒?

通過 docker 的響應時間 通過 docker 環境

當我在本地機器上運行時,它只有 ~200 毫秒,這是合理的

本地機器上的響應時間 env 本地機器

docker-compose.yml文件

version: "3.4"

networks:
    backend:
        driver: bridge

services:
  mysql:
    image: mysql:8.0
    container_name: mysql
    restart: unless-stopped
    ports:
      - 3307:3306
    environment:
      - MYSQL_ROOT_PASSWORD=securerootpassword
      - MYSQL_DATABASE=${DB_DATABASE}
      - MYSQL_USER=${DB_USERNAME}
      - MYSQL_PASSWORD=${DB_PASSWORD}
    networks:
      backend:
        aliases:
          - db-network

  app: 
    container_name: laravel_app
    build:
        context: .
        dockerfile: ./docker/8.0/php/Dockerfile
        args:
            WWWGROUP: '1000'
    ports:
        - '${APP_PORT:-80}:80'
    networks:
      backend:
        aliases:
          - laravel-app-network
    volumes:
        - '.:/var/www/html' # tried - '.:/var/www/html:cached' same results
    depends_on:
        - mysql

我的docker/8.0/php/Dockerfile

FROM ubuntu:21.04

USER root

ARG WWWGROUP

WORKDIR /var/www/html

ENV DEBIAN_FRONTEND noninteractive
ENV TZ=UTC

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

RUN apt-get update && apt-get install -y \
        libpng-dev \
        zlib1g-dev \
        libxml2-dev \
        libzip-dev \
        libonig-dev \
        zip \
        curl \
        unzip \
        webp \
        gnupg \
        gosu \
        ca-certificates \
        git \
        supervisor \
        libcap2-bin \
        python3

RUN mkdir -p ~/.gnupg \
        && chmod 600 ~/.gnupg \
        && echo "disable-ipv6" >> ~/.gnupg/dirmngr.conf \
        && apt-key adv --homedir ~/.gnupg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys E5267A6C \
        && apt-key adv --homedir ~/.gnupg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C300EE8C

RUN echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu hirsute main" > /etc/apt/sources.list.d/ppa_ondrej_php.list \
       && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
       && echo "deb https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
       && curl -sL https://deb.nodesource.com/setup_16.x | bash -

RUN apt-get update && apt-get install -y php8.0-cli php8.0-dev \
       php8.0-pgsql php8.0-sqlite3 php8.0-gd \
       php8.0-curl php8.0-memcached \
       php8.0-imap php8.0-mysql php8.0-mbstring \
       php8.0-xml php8.0-zip php8.0-bcmath php8.0-soap \
       php8.0-intl php8.0-readline php8.0-pcov \
       php8.0-msgpack php8.0-igbinary php8.0-ldap \
       php8.0-redis php8.0-swoole
       
RUN php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer

RUN apt-get install -y nodejs \
        && npm install -g npm

RUN apt-get install -y mysql-client

RUN setcap "cap_net_bind_service=+ep" /usr/bin/php8.0

RUN groupadd --force -g $WWWGROUP sail
RUN useradd -ms /bin/bash --no-user-group -g $WWWGROUP -u 1337 sail

COPY ./docker/8.0/start-container /usr/local/bin/start-container
COPY ./docker/8.0/supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY ./docker/8.0/php.ini /etc/php/8.0/cli/conf.d/99-sail.ini
RUN chmod +x /usr/local/bin/start-container

EXPOSE 80

ENTRYPOINT ["start-container"]

CPU使用率

更不用說在空閑狀態時可能需要 3-4 秒

它與CPU使用率有關嗎?

CPU使用率

在 api 調用請求中,它在 1400 毫秒期間高達 17-20%,然后回到 0.01%

請注意,它是由Laravel提供的修改過的sail Dockerfile

同樣的問題包括如果使用開箱即用的帆

另外,我保證 Dockerfile 中的所有依賴項都安裝在我的本地機器上,但仍然是同樣的問題。

問題解決:

原來是 windows/WSL 相關問題,我的開發環境建立在運行 Ubuntu 20.04 LTS /mnt/c/Users/<username>/code-directory windows 上

我將整個代碼遷移到實際的 ubuntu 絕對路徑/var/www/html/code-directory就像在生產服務器中一樣,它運行良好。 並相應地對Dockerfile進行了更改。

響應時間約為 100 毫秒,比 Windows 操作系統的本地主機快 200 毫秒

響應時間

暫無
暫無

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

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