Cron 작업이 "실행 중" 상태에서 중단되었습니다.

이 문서에서는 Adobe Commerce cron 작업의 실행이 완료되지 않고 "실행 중" 상태로 유지되어 다른 cron 작업이 실행되지 않는 경우에 대한 해결 방법을 제공합니다. 이 문제는 네트워크 문제, 애플리케이션 충돌, 재배포 문제 등 여러 가지 이유로 발생할 수 있습니다.

영향을 받는 제품 및 버전

클라우드 인프라의 Adobe Commerce, 모든 버전

증상 symptom

재설정해야 하는 cron 작업의 증상은 다음과 같습니다.

  • cron_schedule 큐에 많은 작업이 나타납니다.
  • 사이트 성능 저하 시작
  • 작업이 일정에 따라 실행되지 않음

솔루션 solutions

모든 cron 작업을 한 번에 중지하는 솔루션 solution-stop-all-crons-at-once

WARNING
--job-code 옵션 없이 이 명령을 실행하면 현재 실행 중인 작업을 포함하여 모든 cron 작업이 재설정되므로 cron 작업을 모두 재설정해야 함을 확인한 후와 같은 예외적인 경우에만 이 명령을 사용하는 것이 좋습니다. 재배포는 기본적으로 이 명령을 실행하여 cron 작업을 재설정하므로 환경이 백업된 후 적절하게 복구됩니다. 인덱서가 실행 중일 때는 이 솔루션을 사용하지 마십시오.

이 문제를 해결하려면 cron:unlock 명령을 사용하여 cron 작업을 재설정해야 합니다. 이 명령은 데이터베이스에서 cron 작업의 상태를 변경하여 다른 예약된 작업이 계속 진행될 수 있도록 작업을 강제로 종료합니다.

  1. 터미널을 열고 SSH 키를 사용하여 영향을 받는 환경에 연결합니다.
  2. MySQL 데이터베이스 자격 증명 가져오기: shell echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp
  3. mysql을(를) 사용하여 데이터베이스에 연결: shell mysql -hdatabase.internal -uuser -ppassword main
  4. main 데이터베이스 선택: shell use main
  5. 실행 중인 cron개 작업 모두 찾기: shell SELECT * FROM cron_schedule WHERE status = 'running';
  6. 평소보다 오래 실행되는 작업의 job_code을(를) 복사합니다.
  7. 이전 단계의 예약 ID를 사용하여 특정 cron 작업의 잠금을 해제하세요. shell ./vendor/bin/ece-tools cron:unlock --job-code=<job_code_1> [... --job-code=<job_code_x>]

단일 cron을(를) 중지하는 솔루션 solution-stop-a-single-cron

  1. 터미널을 열고 SSH 키를 사용하여 영향을 받는 환경에 연결합니다.

  2. 다음 명령을 사용하여 장기 실행 작업을 확인하십시오.

    date; ps aux | grep '[%]CPU\|cron\|magento\|queue' | grep -v 'grep\|cron -f'

  3. 아래 샘플 출력에서와 같이 출력에서 현재 날짜와 프로세스 목록을 볼 수 있습니다. START 열은 프로세스의 시작 시간 또는 날짜를 표시합니다.

    code language-none
    Wed May  8 22:41:31 UTC 2019
    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root       590  0.0  0.0  27528  2768 ?        Ss   Jan15   0:49 /usr/sbin/cron -f
    bxc2qly+ 25855  0.0  0.0  23724  2184 ?        S    20:51   0:00 logger -d -u /run/bxc2qlykqhbqe_stg-cron.sock -p cron.info -s -t cron-bxc2qlykqhbqe_stg-bxc2qlykqhbqe_stg
    bxc2qly+ 25860 57.7  1.3 584220 222692 ?       S    20:51   0:02 php bin/magento cron:run
    bxc2qly+ 25863  0.0  0.0  23724  2472 ?        S    20:51   0:00 logger -d -u /run/bxc2qlykqhbqe-cron.sock -p cron.info -s -t cron-bxc2qlykqhbqe-bxc2qlykqhbqe
    bxc2qly+ 25876 53.0  0.6 475472 111468 ?       R    20:51   0:01 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=index --bootstrap=standaloneProcessStarted=1
    bxc2qly+ 25878 57.0  0.6 475472 112080 ?       R    20:51   0:01 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=staging --bootstrap=standaloneProcessStarted=1
    bxc2qly+ 25880 50.5  0.6 475472 111312 ?       R    20:51   0:01 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=catalog_event --bootstrap=standaloneProcessStarted=1
    bxc2qly+ 25882 48.5  0.6 475472 111220 ?       R    20:51   0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=consumers --bootstrap=standaloneProcessStarted=1
    bxc2qly+ 25884 50.5  0.6 475472 111372 ?       R    20:51   0:01 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe_stg/bin/magento cron:run --group=ddg_automation --bootstrap=standaloneProcessStarted=1
    bxc2qly+ 25890 32.5  0.6 475368 110672 ?       R    20:51   0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe/bin/magento cron:run --group=staging --bootstrap=standaloneProcessStarted=1
    bxc2qly+ 25892 34.5  0.6 475472 110724 ?       R    20:51   0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe/bin/magento cron:run --group=catalog_event --bootstrap=standaloneProcessStarted=1
    bxc2qly+ 25894 31.5  0.6 475368 110136 ?       R    20:51   0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe/bin/magento cron:run --group=consumers --bootstrap=standaloneProcessStarted=1
    bxc2qly+ 25896 29.0  0.6 475320 109876 ?       R    20:51   0:00 /usr/bin/php7.1-zts /app/bxc2qlykqhbqe/bin/magento cron:run --group=ddg_automation --bootstrap=standaloneProcessStarted=1
    
  4. 배포 프로세스를 차단할 수 있는 오래 실행되는 cron 작업이 표시되면 kill 명령을 사용하여 프로세스를 종료할 수 있습니다. 프로세스 ID(PID 열 발견)를 식별한 다음 해당 PID을(를) 명령에 추가하여 프로세스를 종료할 수 있습니다.
    프로세스 중지 명령은 다음과 같습니다.

    kill -9 <PID>

  5. 그런 다음 다시 배포하려는 경우 다시 배포할 수 있습니다.

recommendation-more-help
8bd06ef0-b3d5-4137-b74e-d7b00485808a