gpt4 book ai didi

php - 为什么我的 Docker Symfony 项目消耗这么多内存?

转载 作者:IT老高 更新时间:2023-10-28 21:38:52 26 4
gpt4 key购买 nike

说明

我正在 prod 中部署我的 symfony 项目。当我简单地运行 docker-compose up 时它工作正常。但是,我的部署脚本出现问题,请尝试在导航器中访问网页。

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) in /var/www/redaph/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php on line 107

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 65536 bytes) in /var/www/redaph/vendor/composer/ClassLoader.php on line 444

奇怪的是,在我的 dockerfile 中,我指定我希望我的 PHP_MEMORY_LIMIT 为 256M。当我进入我的容器时,我看到以下内容:

root@125de315edca:/var/www/redaph# php -i | grep memory_limit
memory_limit => 128M => 128M

问题

为什么我的 Docker Symfony 项目会消耗这么多内存?

如果这是正常的,那么:如何正确增加 dockerfile 中的 PHP_MEMORY_LIMIT?

deploy_prod.sh

#!/usr/bin/env bash
PROJECT=symfony
docker-compose up -d
docker exec redaph_symfony_1 php bin/console d:s:u --force
docker exec redaph_symfony_1 php bin/console c:c

Dockerfile:

FROM php:7.2-apache

ENV \
APACHE_ADMIN_EMAIL=webmaster@localhost \
PHP_TIME_ZONE=Europe/London \
PHP_MEMORY_LIMIT=256M \
PHP_UPLOAD_MAX_FILESIZE=32M \
PHP_POST_MAX_SIZE=32M

ARG WORK_DIR

WORKDIR $WORK_DIR

COPY composer.lock $WORK_DIR
COPY composer.json $WORK_DIR

ENV COMPOSER_ALLOW_SUPERUSER 1

RUN apt-get update \
&& apt-get install -y -f apt-transport-https \
libicu-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libpq-dev \
acl \
cron \
git \
zip \
&& pecl install mongodb \
&& docker-php-ext-enable mongodb \
&& docker-php-ext-install \
exif \
gd \
intl \
opcache \
pdo_mysql \
pdo_pgsql \
zip \
&& curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/composer \
&& composer install --no-dev --prefer-dist --optimize-autoloader --no-scripts \
&& chown -R www-data:www-data $WORK_DIR \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& a2enmod rewrite \
&& service cron start

最佳答案

问题似乎更有可能是您的应用的代码/配置。 Docker 可能不需要碰。

根据您配置的处理程序,研究限制独白的缓冲区大小(configuration code here -- 搜索 buffer_size)。

使用 Composer,在 dev 中本地运行 composer update。部署时,运行 composer installupdateinstall 占用更多内存来解析依赖关系图,假设 install 有一个 composer.lock 可以使用。

看起来这是根据您发布的 dockerfile 正在做的事情,但可能在此过程中某处正在发生/干扰其他事情。我会验证 composer.lock 是否包含您认为的内容,以防万一。

您也可以在运行 composer 时尝试标记 memory_limit=-1:

php -d memory_limit=-1 composer install rest-of-args-here

如果这还不够,请提供您正在使用的 Symfony 版本。发布你的 composer.json 和 Symfony 与 monolog 相关的配置。

关于php - 为什么我的 Docker Symfony 项目消耗这么多内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50954192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com