Cloud Run 未捕获信号:升级 Laravel 9 后为 11
P粉739886290
P粉739886290 2023-08-31 09:23:32
[PHP讨论组]

我使用 PHP8 将项目升级到 Laravel 9。但由于我部署在 Cloud Run 上,我在 Cloud Run 日志中随机出现以下错误:

未捕获信号:11,pid=17,tid=17,fault_addr=4294967296017。

因此查询因 503 错误而中止:GET 503 898 octets 682 msChrome 109 https://...

这是我的 php-custom.ini :

max_execution_time = 500
upload_max_filesize = 40M
post_max_size = 40M
memory_limit = 800M
max_file_uploads = 100

还有我的 opcache.ini :

[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.revalidate_freq=0
opcache.validate_timestamps=0
opcache.max_accelerated_files=32531
opcache.memory_consumption=256
opcache.max_wasted_percentage=10
opcache.interned_strings_buffer=64
opcache.fast_shutdown=1
opcache.jit_buffer_size=100M
opcache.jit=1235

还有我的 dockerfile:

FROM php:8.2.3-apache as base

# Arguments defined in docker-compose.yml
ARG user
ARG uid

WORKDIR /app

# Install PHP dependencies
RUN apt-get update && apt-get install -y \
        libpng-dev \
        zlib1g-dev \
        libxml2-dev \
        libzip-dev \
        libonig-dev \
        zip \
        unzip \
        locales \
        pdftk \
    && sed -i -e 's/# fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/' /etc/locale.gen \
    && locale-gen \
    && docker-php-ext-configure gd \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install pdo_mysql \
    && docker-php-ext-install mysqli \
    && docker-php-ext-install zip \
    && docker-php-source delete \
    && docker-php-ext-configure intl \
    && docker-php-ext-install intl \
    && docker-php-ext-install opcache \
    && docker-php-ext-install bcmath

# Env
ENV LC_ALL fr_FR.UTF-8 
ENV LANG fr_FR.UTF-8
ENV LANGUAGE fr_FR:en

# Copy project, vhost.conf, config php and install composer
COPY . .
COPY docker/vhost.conf /etc/apache2/sites-available/000-default.conf
COPY docker/custom.ini $PHP_INI_DIR/conf.d/custom.ini
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

RUN sed -i 's/80/${PORT}/g' /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf

# Add permissions
RUN mkdir -p /app/vendor \
    mkdir -p /app/storage/logs \
    && useradd -G www-data,root -u $uid -d /home/$user $user \
    && mkdir -p /home/$user/.composer \
    && chown -R $user:$user /home/$user \
    && chown -R $user:$user /app \
    && a2enmod rewrite \
    && chmod +x docker/startup-dev.sh \
    && chmod +x docker/startup-prod.sh

EXPOSE 8080

FROM base as development
RUN apt-get update && apt-get install -y nano
ENTRYPOINT ["docker/startup-dev.sh"]
CMD ["apache2-foreground"]
USER $user

FROM base as production
COPY docker/opcache.ini $PHP_INI_DIR/conf.d/opcache.ini
RUN composer clearcache && composer install --optimize-autoloader --no-dev
ENTRYPOINT ["docker/startup-prod.sh"]
CMD ["apache2-foreground"]
USER $user

我不知道如何重现该错误,因为它非常随机,但我注意到该错误是在 Cloud Run 冷启动后出现的。我不知道问题是否是由我的 opcache 配置引起的。我的云运行服务有 1 个 CPU 和 2 个 GO 内存。

我不知道如何解决这个问题。

编辑

当我收到错误时,我添加了 2 个图表:

P粉739886290
P粉739886290

全部回复(1)
P粉434996845

我解决了我的问题。这与 Cloud Run 无关。问题在于 JIT 配置。我改变了这个:

opcache.jit=1235

opcache.jit=1255

根据此: https://php.watch/versions /8.0/JIT#jit-opcache-jit-values 我也尝试了:

tracing: An alias to the granular configuration 1254.
function: An alias to the granular configuration 1205.

如果你不想使用 1255,它也可以工作。但我使用了 1255 因为在此拉取请求 我看到了很多 1255 配置的单元测试。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号