PHP-FPM, MariaDB 및 Symfony Form Doctrine 쿼리 작성기의 매우 이상한 동작(오류 503)
제가 이 문제를 더 잘 분류할 수 없다는 점에 대해 미리 사과드립니다. 하지만 그 행동은 문제의 출처를 전혀 알 수 없을 정도로 혼란스럽습니다.다른 개발자와 함께 몇 시간 동안 버그 수정을 시도했지만 실패했습니다.데이터베이스 또는 PHP에서 문제가 발생할 수도 있습니다(두 사람이 의사소통을 시도할 때 분명히 문제가 발생합니다).우리는 아마도 누군가가 비슷한 경험을 했고 적어도 우리를 어떤 방향으로 이끌 수 있기를 바랍니다.
그것은 코드와 관련된 문제가 아니라 인프라 문제인 것처럼 보이지만, 누가 알겠어요.
시스템: 중심OS 7 VPS, PHP-FPM 8.1, Symfony 6.0.11, MariaDB 10.2.38
중요:Symfony를 다음으로 설정하면 모든 것이 정상적으로 작동합니다.dev
환경. 로전때문으로 했을 때만 가 있음prod
.
Symfony의 FormType 내부의 코드를 위반하는 경우(Request Life-cycle의 다른 코드는 무관한 것으로 보이며, 아래 코드를 제거하면 문제가 완전히 제거되며, PHP와 MariaDB 간의 통신은 다른 모든 쿼리에서 정상적으로 작동하는 것으로 보입니다.)
$builder
->add('type', EntityType::class, [
'class' => Property::class,
'choice_label' => 'name',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('p')
->orderBy('p.name', 'ASC');
}
])
;
브라우저 출력:
서비스 사용 서비사불가용
유지 관리 다운타임 또는 용량 문제로 인해 서버가 일시적으로 사용자의 요청을 처리할 수 없습니다.나중에 다시 시도해 주십시오.
서버 로그:
AH01067: FastCGI 헤더를 읽지 못함
연결 [ REDACTED-IP(104) 에 요청 발송 : [client REDACTED-IP:53320] AH01075: 에 대한 :
PHP 로그:
경고: [pool admin] 하위 1770은 시작으로부터 1.360270초 후 신호 11(SIGSEGV)에서 종료되었습니다.
데이터베이스 로그:
[경고] 2787505에서 db: 'REDACTED' 사용자: 'REDACTED' 호스트: 'localhost'(통신 패킷을 읽는 동안 오류가 발생했습니다)
만약을 위해 다음과 같은 노력도 했습니다.
- 전체 VPS 다시 시작
- rm -r var/cache를 통한 Symfony 캐시 하드 제거
- OPcache 사용 안 함(일부 Google이 해당 관계를 암시함)
제 정신이 아닌가 하는 의문이 드는 부분은전체를 제거할 때orderBy
위 코드의 조항은 작동하기 시작합니다.더 어이없는 것은, 내가 변했을 때.orderBy('p.name', 'ASC')
orderBy('p.name', 'DESC')
또한 작동하기 시작합니다(계속!).가 바뀔 때 ㅠㅠㅠㅠㅠp.name
다른 유효한 자산으로, 그러나 여전히 사용합니다.ASC
정렬할 수 없습니다.그런 경우에 나는 변합니다.ASC
DESC
효과가 있습니다!
Mock-up 테스트 절차를 만들고 이를 통해 생성된 코어 덤프 파일을 추가로 분석한 결과, 다음과 같은 것을 발견했습니다.
프로그램이 신호 11, 세그멘테이션 오류로 종료되었습니다.
#00x00007f9a3954b0d0 /ioncube/.1.so 에서 /usr/local/lib/ioncube/ioncube_ips_lin_8.1.so 으로 시작합니다.
ionCube Loader의 최신 버전은 8월 12일에 출시되었습니다: https://www.ioncube.com/loaders.php 그리고 그것은 VPS에서 8월 14일에 자동으로 실행된 것 같습니다. 바로 그 때 이상한 오류들이 터지기 시작한 것입니다.그래서 우리는 ionCube Loader 확장을 비활성화했고 우리의 모든 PHP 스크립트는 다시 정상적으로 작동합니다.
이것은 PHP를 분할 결함으로 죽게 만드는 코드의 정확한 라인을 정확하게 지적하지는 않지만, 적어도 PHP 8.1과 함께 ionCube Loader 12.0.1이 잠재적으로 SIGSEGV 오류를 일으킬 수 있다는 사실을 지적합니다.대부분의 스크립트가 잘 작동하고 일부 스크립트만 매우 이상한 조건에서 사망하기 때문에 코드에서 더 깊은 곳에서 무슨 일이 발생하는지 알 수 없습니다(원래 게시물에서 설명한 바와 같이).그러나 이러한 모든 상황에서 하드 크래시는 ionCube Loader 12.0.1의 존재로 인해 발생하며 그 개발은 문제를 더 깊이 조사하는 사람들이어야 합니다(적절한 크래시 보고서를 제출하도록 하겠습니다).
유사한 문제가 발생할 경우를 대비하여 이 답변을 여기에 남깁니다.
편집:
2023년 2월 1일 현재 이 문제는 여전히 지속되고 있습니다.한편, 비슷한 문제를 경험한 Github의 몇몇 좋은 사람들은 이 문제가 ionCube Loader에서 비롯되었다는 제 연구 결과를 확인했을 뿐만 아니라 경우에 따라 도움이 될 수 있는 반창고 솔루션을 발견했으므로 여기에 남겨두겠습니다.
config/prod/docrine.yaml(앱/빌드의 파일 이름/위치는 다를 수 있음)에서 독트린의 어댑터 값을 변경합니다.system_cache_pool이 cache.system에서 cache.message로 이동합니다.다음과 같은 파일 시스템:
framework:
cache:
pools:
doctrine.result_cache_pool:
adapter: cache.app
doctrine.system_cache_pool:
adapter: cache.adapter.filesystem
자세한 내용은 https://github.com/symfony/symfony/discussions/44270 을 참조하십시오. https://github.com/symfony/symfony/discussions/44270
저는 방금 똑같은 문제에 직면했습니다.
PHP 버전: 8.1.10 Symfony: 6.0.8 독트린/dbal(작곡자 잠금에서): 3.3.6 이온큐브 로더: 12.0.1
저도 같은 결과를 경험하고 있습니다."ASC"에서 "DESC"로 변경하면 정상적으로 작동합니다.이 문제는 특히 "ASC"로 주문할 때 발생합니다.저의 경우 "addOrderBy" 메서드를 사용하고 있습니다.
언급URL : https://stackoverflow.com/questions/73372479/very-strange-behavior-error-503-with-php-fpm-mariadb-and-symfony-form-doctrin
'sourcecode' 카테고리의 다른 글
기본 재배치를 수행한 후 동일한 분기에서 Git 커밋이 중복됩니다. (0) | 2023.06.22 |
---|---|
강제 Oracle 강제 삭제 글로벌 온도 테이블 (0) | 2023.06.22 |
ResolveUrl과 ResolveClientUrl의 차이점은 무엇입니까? (0) | 2023.06.17 |
단일 플라스크 프로세스가 수신하는 동시 요청 수는 얼마나 됩니까? (0) | 2023.06.17 |
Firestore - 특정 필드 변경을 들으시겠습니까? (0) | 2023.06.17 |