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, fall_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
upload_max_filesize = 40M
post_max_size = 40M
memory_limit = 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 /앱
# PHP 의존성 설치
RUN apt-get 업데이트 && 적절한 설치 -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
&& 로캘 생성
&& 도커-php-ext-구성 gd
&& docker-php-ext-install -j$(nproc) gd
&& 도커-php-ext-설치 pdo_mysql
&& 도커-php-ext-설치 mysqli
&& docker-php-ext-설치 zip
&& docker-php-소스 삭제
&& docker-php-ext-configure intl
&& docker-php-ext-install intl
&& docker-php-ext-설치 opcache
&& docker-php-ext-설치 bcmath
# 환경
ENV LC_ALL fr_FR.UTF-8
ENV LANG fr_FR.UTF-8
ENV 언어 fr_FR:en
# 프로젝트, vhost.conf, config php를 복사하고 작곡가를 설치합니다.
복사 . .
COPY docker/vhost.conf /etc/apache2/sites-available/000-default.conf
COPY docker/custom.ini $PHP_INI_DIR/conf.d/custom.ini
복사 --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
# 권한 추가
실행 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
FROM 기반 개발
RUN apt-get 업데이트 && apt-get 설치 -y 나노
ENTRYPOINT ["docker/startup-dev.sh"]
CMD ["apache2-전경"]
사용자 $사용자
생산 기반에서
COPY docker/opcache.ini $PHP_INI_DIR/conf.d/opcache.ini
RUN 작곡가 클리어캐시 && 작곡가 설치 --optimize-autoloader --no-dev
ENTRYPOINT ["docker/startup-prod.sh"]
CMD ["apache2-전경"]
사용자 $user</pre>
<p>저는 Cloud Run에서 冷启动后출발적에 대해 알지 못합니다.配置引起的。나의 것云运行服务에는 1개의 CPU와 2개의 GO가 있습니다.</p>
<p>저는 알지 못하는 길을 알고 있습니다.</p>
<p><strong>编辑</strong></p>
<p>当我收到错误时,我添加了 2 个图表:</p>
문제를 해결했습니다. 이는 Cloud Run과 관련이 없습니다. 문제는 JIT 구성입니다. 나는 이것을 바꿨다:
으아악to
으아악이에 따르면: https://php.watch/versions/8.0/JIT#jit-opcache-jit-values 나도 시도했습니다:
으아악1255를 사용하고 싶지 않은 경우에도 작동합니다. 하지만
1255
를 사용한 이유는 이 풀 리퀘스트에서 1255 구성의 단위 테스트를 많이 봤기 때문입니다.