PHP-fpm работает медленно с nginx,

Итак, я провел несколько тестов на своем контейнере докеров (nginx подключается к php-fpm), и это более чем в 70 раз медленнее, чем голое железо. Я могу обрабатывать 100 запросов в секунду по сравнению с «голым железом», то есть 7000 в секунду.

docker-compose.yml:

version: '3'

services:
    #web
    frontend:
        build:
            context: ./environment/nginx
            dockerfile: ./Dockerfile
        container_name: nginx_software
        restart: always
        ports:
            - 80:80
        volumes:
            - ./environment/nginx/nginx.conf:/etc/nginx/nginx.conf
        links:
            - php
    php:
        build:
            context: ./environment/php
            args:
                version: 7.3-fpm
            dockerfile: ./Dockerfile
        container_name: php_software
        restart: always
        ports:
            - 9000:9000
        volumes:
            - ./api:/var/www/software:cached
        links:
            - mysql
    mysql:
        build:
            context: ./environment/mysql
            args:
                version: 5.7
            dockerfile: ./Dockerfile
        container_name: mysql_software
        command: --default-authentication-plugin=mysql_native_password
        restart: always
        ports:
            - 3306:3306
        volumes:
            - ./environment/mysql/data:/var/lib/mysql
        environment:
            MYSQL_ROOT_PASSWORD: software
            MYSQL_DATABASE: software
            MYSQL_USER: software
            MYSQL_PASSWORD: software

Мой nginx.conf

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {

}

http {

    include /etc/nginx/mime.types;

    server {

        listen 80;
        listen [::]:80;
        server_name software.test;
        root /usr/share/nginx/html/software;

        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        #add_header X-Content-Type-Options "nosniff";

        index index.html;

        location / {
            try_files $uri $uri/ =404;
        }

        charset utf-8;
    }

    server {
        listen 80;
        listen [::]:80;
        server_name api.software.test;
        root /var/www/software/public;

        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-XSS-Protection "1; mode=block";
        #add_header X-Content-Type-Options "nosniff";

        index index.php;

        charset utf-8;

        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }

        error_page 404 /index.php;

        location ~ \.php$ {

            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO       $fastcgi_path_info;
            fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

            fastcgi_pass   php:9000;
            fastcgi_index index.php;
        }

        location ~ /\.(?!well-known).* {
            deny all;
        }
    }

}

Мой файл докеров для nginx, просто копирует файл conf в / etc Папка / nginx.

, если я создаю собственный файл fpm или использую следующий: https://github.com/uvd/php-docker-bench , я получаю правильное количество запросов в секунду (7000), но с моя текущая настройка nginx / fpm, я едва превышаю 100 RPS. Что я делаю не так, есть идеи?

0
задан 27 February 2019 в 03:02
1 ответ

Opcache отключен в контейнере докеров PHP FPM по умолчанию. Добавьте эту строку в свой PHP Dockerfile, чтобы установить его:

RUN docker-php-ext-install opcache

4
ответ дан 4 December 2019 в 11:41

Теги

Похожие вопросы