Amazon RDS for PostgreSQL에서 pg_cron 확장과 관련된 일반적인 문제를 해결하려면 어떻게 해야 합니까?

3분 분량
0

Amazon Relational Database Service(Amazon RDS) for PostgreSQL에서 pg_cron 확장과 관련된 일반적인 문제를 해결하려고 합니다.

간략한 설명

Amazon RDS for PostgreSQL은 데이터베이스 내에서 실행되는 pg_cron 확장을 지원하며, 이를 통해 PostgreSQL 명령을 예약할 수 있습니다. pg_cron 확장을 실행하면 예약된 시간에 실행되지 않는 작업과 적용되지 않은 업데이트와 관련하여 문제가 발생할 수 있습니다.

해결 방법

Amazon RDS for PostgreSQL에서 pg_cron 확장과 관련된 문제를 해결하려면 다음 단계를 수행합니다.

참고: 시작하기 전에 pg_cron 확장이 올바르게 설정되어 있는지 확인하십시오. 자세한 내용은 pg_cron 확장 설정을 참조하십시오.

예약된 시간에 실행되지 않는 예약된 pg_cron 작업

예약된 시간에 실행되지 않는 예약된 pg_cron 작업 관련 문제를 해결하려면 다음 단계를 수행하십시오.

  1. pg_cron 실행 프로그램이 cron 작업 워커를 시작하는 데이터베이스에서 실행되는지 확인합니다.

    예시:

    postgres=> select application_name,usename,backend_type,query,state,wait_event_type,age(now(),backend_start) as backend_start_age,age(now(),query_start) as query_start_age,age(now(),state_change) state_change_age from pg_stat_activity where backend_type = 'pg_cron launcher';

    출력 예시:

     application_name  | usename  |   backend_type   | query | state  | wait_event_type |      backend_start_age       | query_start_age | state_change_age
    -------------------+----------+------------------+-------+--------+-----------------+------------------------------+-----------------+------------------
     pg_cron scheduler | rdsadmin | pg_cron launcher |       | [NULL] | Extension       | 2 mons 28 days 15:16:41.6642 | [NULL]          | [NULL]
    (1 row)

    참고: 이전 쿼리가 0개의 행을 반환하면 pg_cron 실행 프로그램이 실행되고 있지 않은 것입니다. 이 문제를 해결하려면 Amazon RDS 인스턴스를 다시 시작하여 실행 프로그램을 시작하고 예약된 작업이 실행되도록 하십시오.

  2. 이전 쿼리가 행을 반환하는 경우에는 이전 작업이 실행 중 상태인지 확인하십시오.
    참고: Pg_cron은 여러 작업을 병렬로 실행할 수 있지만 한 번에 하나의 작업 인스턴스를 실행합니다. 첫 번째 작업이 실행되는 동안 두 번째 작업 실행이 시작되도록 예약된 경우 두 번째 작업은 대기열에 추가됩니다. 두 번째 작업은 첫 번째 작업 실행이 완료된 후 시작됩니다.

    예시:

    postgres=> select *  FROM cron.job_run_details where status ='running';
     jobid | runid | job_pid | database | username | command | status | return_message | start_time | end_time
    -------+-------+---------+----------+----------+---------+--------+----------------+------------+----------  1 |     2 |   15712 | postgres | postgres | select pg_sleep(5) | running   | [NULL]         | 2024-07-10 16:40:00.025228+00 | [NULL]  (1 row)
  3. 작업 일정이 UTC 시간대와 일치하도록 구성되었는지 확인합니다. pg_cron 예약 시간은 Amazon RDS for PostgreSQL 데이터베이스의 UTC 시간대를 기준으로 합니다.

적용되지 않은 cron.max_running_jobs에 대한 업데이트

cron.max_running_jobs 파라미터는 동시에 실행할 수 있는 최대 작업 수를 결정합니다. cron.max_running_jobs를 늘리려면 max_worker_processescron.max_running_jobs 이상이 되도록 업데이트하십시오. Cron.max_running_jobsmax_worker_processes보다 클 수 없습니다. cron.max_running_jobsmax_worker_processes보다 높게 늘리면 업데이트가 적용되지 않습니다. 변경 사항을 적용하기 위해서는 cron.max_running_jobs 파라미터를 업데이트할 때 Amazon RDS 인스턴스를 재부팅해야 합니다.

관련 정보

작업 예약 및 상태 캡처를 위한 테이블