Cloud Run がシグナルをキャッチしない: Laravel 9 のアップグレード後 11
P粉739886290
2023-08-31 09:23:32
<p>PHP8 を使用してプロジェクトを Laravel 9 にアップグレードしました。ただし、Cloud Run にデプロイしているため、Cloud Run ログにランダムに次のエラーが表示されます。 </p>
<p><code> キャッチされなかった信号: 11、pid=17、tid=17、fault_addr=4294967296017。</code></p>
<p>故に此蟥询因 503 错误而中止:<code>GET 503 898 オクテット 682 msChrome 109 https://...</code></p>
<p>これは我の php-custom.ini :</p>
<pre class="brush:php;toolbar:false;">max_execution_time = 500
アップロード最大ファイルサイズ = 40M
post_max_size = 40M
メモリ制限 = 800M
max_file_uploads = 100</pre>
<p>もう有我の opcache.ini :</p>
<pre class="brush:php;toolbar:false;">[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</pre>
<p>もう有我の dockerfile:</p>
<pre class="brush:php;toolbar:false;">FROM php:8.2.3-apache をベースとして使用
# docker-compose.yml で定義された引数
ARG ユーザー
ARG UID
WORKDIR /app
# PHP の依存関係をインストールする
apt-get update を実行 && apt-get install -y \
libpng-dev \
zlib1g-dev \
libxml2-dev \
libzip-dev \
libonig-dev \
ジップ \
解凍\
ロケール \
pdftk\
&& sed -i -e 's/# fr_FR.UTF-8 UTF-8/fr_FR.UTF-8 UTF-8/' /etc/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 削除 \
&& docker-php-ext-configure intl \
&& docker-php-ext-install intl \
&& docker-php-ext-install opcache \
&& docker-php-ext-install bcmath
# 環境
ENV LC_ALL fr_FR.UTF-8
ENV LANG fr_FR.UTF-8
環境言語 fr_FR:en
# プロジェクト、vhost.conf、config php をコピーし、composer をインストールします
コピー 。 。
docker/vhost.conf /etc/apache2/sites-available/000-default.conf をコピーします
docker/custom.ini $PHP_INI_DIR/conf.d/custom.ini をコピーします。
COPY --from=composer:最新 /usr/bin/composer /usr/bin/composer
RUN sed -i 's/80/${PORT}/g' /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf
# 権限を追加する
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 書き換え \
&& chmod x docker/startup-dev.sh \
&& chmod x docker/startup-prod.sh
エクスポーズ8080
開発としてのベースから
apt-get update を実行 && apt-get install -y nano
エントリーポイント ["docker/startup-dev.sh"]
CMD ["apache2-foreground"]
ユーザー $user
本番としてのベースから
docker/opcache.ini $PHP_INI_DIR/conf.d/opcache.ini をコピーします
RUN コンポーザー クリアキャッシュ &&コンポーザーのインストール --optimize-autoloader --no-dev
エントリーポイント ["docker/startup-prod.sh"]
CMD ["apache2-foreground"]
USER $user</pre>
<p>この問題が非常に緩やかであるため、どのように発生するかはわかりませんが、この問題が Cloud Run の冷却開始後に発生することに注意してください。クラウド実行サービスには 1 つの CPU と 2 つの GO が内蔵されています。
<p>この問題をどう解決するか私たちにはわかりません。</p>
<p>编辑</strong></p>
<p>当我收到错误時,我追加2个图表:</p>
問題が解決しました。これは Cloud Run とは関係ありません。問題は JIT 構成です。これを変更しました:
リーリー ###に### リーリーこれによると:
https://php.watch/versions /8.0/JIT#jit-opcache-jit-values私も試しました: リーリー 1255 を使用したくない場合は、それも機能します。ただし、
1255を使用したのは、この
プル リクエスト
で 1255 構成の単体テストが多数見られたためです。