마 젠토 2.2.x 캐시 자동 비활성화


16

우선, 웹의 어느 곳에서도 이런 종류의 문제에 대한 정보를 찾을 수 없었습니다.

우리는 git 통합을 가진 프로덕션 환경을 가지고 있습니다 . 우리는 git ( git pull )을 통해서만 변경 사항을 가져옵니다 .

문제는 어떻게 든 Magento 캐시가 자동으로 비활성화 되는 단계 중 하나입니다 (cache : status를 확인할 때 모두 0) . 캐시를 사용하지 않고 Magento에 대한 트래픽이 많으면 서버 과부하가 발생하여 프로그래머를 통해 누락 된 경우 문제가 발생합니다.

아마 당신 중 일부는 전에이 문제를 본 적이 있습니까? 우리는 정확히 언제 또는 어떻게 발생하는지 알 수 없습니다.
그리고 그것은 무작위로 나타납니다.

우리가하는 일반적인 단계 :

  • 유지 보수 가능
  • 자식 풀
  • 작곡가 설치 (필요한 경우)
  • 모듈 Vendor_ModuleName 활성화 (필요한 경우)
  • 설치 : 업그레이드 (필요한 경우)
  • 정적 물건 지우기
  • 배포 명령
  • 캐시 지우기
  • opcache 지우기
  • 유지 보수 비활성화

이런 종류의 문제를 해결하는 데 도움이 될만한 소중한 제안을 부탁드립니다.


당신이 할 경우 setup:upgrade다음 캐시는 automaticallyu 비활성화됩니다
아 미트 Bera

@AmitBera 나는이 명령을 무차별 화하더라도 캐쉬를 돌리지 않을 것이다
Macas

괜찮아. 나는 .... 테스트를 체크 screnerio 볼
아 미트 Bera

답변:


16

이것은 알려진 문제 처럼 보입니다 :
이것은 때때로 작업중 인 프로젝트에서 발생하지만 재생산 단계를 찾을 수 없었습니다. 내가 말할 수있는 것은 배포 프로세스 중에 발생한다는 것입니다.
내가 찾을 수있는 것은 특정 상황에서 파일 .regeneratevar폴더에 작성되고 (설정 업그레이드 또는 작성기 설치 / 업그레이드 중) setup:di:compile캐시를 실행할 때 해당 파일이 존재하는 경우 컴파일 프로세스가 끝나면 다시 사용할 수 없다는 것입니다.
어떤 이유로 캐시가 다시 활성화되지 않는 경우가 있습니다.
우리는 빠르고 더러운 접근 방식을 취하여 배포 프로세스의 마지막 단계를 php bin/magento cache:enable확실히했습니다. 그래서 기본적으로 우리는 깔개 밑에 먼지를 숨겼습니다.

당신의 캐시를 비활성화 코드를 찾을 수 있습니다 여기에
그것은이에 싸여 TODO: remove문을.


1
확인할 수 있습니다. 그것이 일어날 때 깔개 밑에 숨어
Philipp Sander

좋아, 내가 이것을 가진 유일한 사람은 아닌 것 같습니다. 우리는 일반적으로 오류가 발생하고 배포 프로세스가 충돌 할 때 이것을 얻습니다. 귀하의 정보를 보면 이것이 사실입니다. 정보를 보내 주셔서 감사합니다.
Macas

누구든지 해결책을 얻었습니까?
Manish Goswami

5

관심있는 사람이라면 누구나이 문제에 대해 밝힐 수 있다고 생각합니다. var / .regenerate 플래그가 설정되어 있고 둘 이상의 프로세스 / 요청이 생성 된 파일을 정리하려고 할 때 \ Magento \ Framework \ Code \ GeneratedFiles :: cleanGeneratedFiles에서 동시성 (경쟁 조건) 문제인 것 같습니다 .

cron을 사용하도록 설정하고 use_separate_process 구성을 사용하는 많은 cron 그룹이 발생할 가능성이 높습니다. 둘 이상의 프로세스가 동일하게 정리하려고하면 FileIterator가 다음과 유사한 다른 메시지와 함께 실패합니다.FilesystemIterator::__construct(/Users/adrianmartinez/Sites/r2-project-develop-b2b/environments/2-2-develop-b2b/magento/generated/code): failed to open dir: No such file or directory.

$this->write->delete(self::REGENERATE_FLAG);첫 번째 도착 프로세스가 파일 정리를 담당하는 것으로 표시되므로 플래그 존재 확인 직후에로 호출을 이동 하면 문제점이 해결됩니다.

여기에 문제를 복제하는 방법에 대한 데모 비디오를 남겨주세요 : https://youtu.be/9-X1cIIY7y8

그리고 스크립트가 그것을 사용했습니다 :

#!/bin/bash

# \Magento\Framework\Code\GeneratedFiles has a concurrency problem
# Create regenerate flag and launch parallel commands that try to regenerate at the same time
# This is a real case, cron:run launches stand alone processes in parallel

# Created by magento composer installer upon code install or module enable/disable
touch var/.regenerate

# Launch parallel commands
# Error differs each execution, sometimes it even works
bin/magento cron:run --group=ddg_automation --bootstrap=standaloneProcessStarted=1 2>&1 &
bin/magento cron:run --group=index --bootstrap=standaloneProcessStarted=1 2>&1 &

wait
echo "All done"

해결책을 찾았습니까?
Manish Goswami

이 문제를 재현하는 방법을 찾았지만 해결책을 얻지 못했습니다. github.com/magento/magento2/issues/17634
Manish Goswami
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.