Timeout:VacuumDelay - Amazon Relational Database Service

Timeout:VacuumDelay

Timeout:VacuumDelay 이벤트는 vacuum I/O의 비용 한도가 초과되었고 vacuum 프로세스가 절전 모드로 전환되었음을 나타냅니다. vacuum 작업은 해당 비용 지연 파라미터에 지정된 기간 동안 중지되었다가 작업을 재개합니다. 수동 vacuum 명령의 경우 vacuum_cost_delay 파라미터에 지연이 지정됩니다. autovacuum 대몬(deamon)의 경우 autovacuum_vacuum_cost_delay parameter.에 지연이 지정됩니다.

지원되는 엔진 버전

이 대기 이벤트 정보는 모든 RDS for PostgreSQL 버전에서 지원됩니다.

컨텍스트

PostgreSQL에는 autovacuum 대몬(daemon)과 수동 vacuum 명령이 모두 있습니다. RDS for PostgreSQL DB 인스턴스의 경우 autovacuum 프로세스가 기본적으로 켜져 있습니다. 수동 vacuum 명령은 필요에 따라 사용됩니다(예: 죽은 튜플의 테이블을 지우거나 새 통계를 생성하기 위해).

vacuum이 진행 중일 때 PostgreSQL은 시스템이 다양한 I/O 작업을 수행할 때의 예상 비용을 내부 카운터를 사용하여 추적합니다. 카운터가 비용 한도 파라미터에 지정된 값에 도달하면 작업을 수행하는 프로세스는 비용 지연 파라미터에 지정된 짧은 기간 동안 절전 상태로 전환됩니다. 그런 다음 카운터를 재설정하고 작업을 계속합니다.

vacuum 프로세스에는 리소스 소비 조절에 사용할 수 있는 파라미터가 있습니다. autovacuum과 수동 vacuum 명령에는 비용 한도 값을 설정하기 위한 자체 파라미터가 있습니다. 또한 비용 지연, 즉 한도에 도달했을 때 vacuum을 절전 상태로 전환하는 데 걸리는 시간을 지정하는 자체 파라미터도 있습니다. 비용 지연 파라미터는 이렇게 리소스 소비 제한 메커니즘으로 작동합니다. 다음 목록에서 이러한 파라미터에 대한 설명을 찾을 수 있습니다.

autovacuum 대몬(daemon)의 제한에 영향을 주는 파라미터
  • autovacuum_vacuum_cost_limit - 자동 vacuum 작업에 사용할 비용 한도 값을 지정합니다. 이 파라미터의 설정을 늘리면 vacuum 프로세스가 더 많은 리소스를 사용할 수 있고 Timeout:VacuumDelay 대기 이벤트가 줄어듭니다.

  • autovacuum_vacuum_cost_delay - 자동 vacuum 작업에 사용할 비용 지연 값을 지정합니다. 기본값은 2밀리초입니다. 지연 파라미터를 0으로 설정하면 제한 메커니즘이 해제되므로 Timeout:VacuumDelay 대기 이벤트가 나타나지 않습니다.

자세한 내용은 PostgreSQL 설명서의 자동 Vacuuming을 참조하세요.

수동 vacuum 프로세스의 제한에 영향을 미치는 파라미터
  • vacuum_cost_limit - vacuum 프로세스가 절전 상태로 전환되는 임계값입니다. 기본적으로 한도는 200입니다. 이 숫자는 다양한 리소스에 필요한 추가 I/O의 누적 예상 비용을 나타냅니다. 이 값을 늘리면 Timeout:VacuumDelay 대기 이벤트 수가 줄어듭니다.

  • vacuum_cost_delay - vacuum 비용 한도에 도달했을 때 vacuum 프로세스가 절전 상태가 되는 시간입니다. 기본 설정은 0이며, 이는 이 기능이 해제되어 있음을 의미합니다. 이 값을 정수 값으로 설정하면 이 기능을 켜는 데 걸리는 시간을 밀리초 단위로 지정할 수 있지만 기본 설정을 그대로 두는 것이 좋습니다.

vacuum_cost_delay 파라미터에 대한 자세한 내용은 PostgreSQL 설명서에서 리소스 소비를 참조하세요.

RDS for PostgreSQL에서 autovacuum을 구성하고 사용하는 자세한 방법은 Amazon RDS for PostgreSQL에서 PostgreSQL Autovacuum 사용을 참조하세요.

대기 증가의 가능한 원인

Timeout:VacuumDelay는 vacuum의 절전 시간을 제어하는 비용 한도 파라미터 설정(vacuum_cost_limit, autovacuum_vacuum_cost_limit)과 비용 지연 파라미터(vacuum_cost_delay, autovacuum_vacuum_cost_delay) 간의 균형에 영향을 받습니다. 비용 한도 파라미터 값을 높이면 vacuum이 절전 상태로 전환되기 전에 더 많은 리소스를 사용할 수 있습니다. 그러면 Timeout:VacuumDelay 대기 이벤트가 줄어듭니다. 지연 파라미터 중 하나를 늘리면 Timeout:VacuumDelay 대기 이벤트가 더 자주, 더 오랜 시간 동안 발생합니다.

autovacuum_max_workers 파라미터 설정은 Timeout:VacuumDelay의 수도 늘릴 수 있습니다. 각각의 추가 autovacuum 작업자 프로세스는 내부 카운터 메커니즘에 기여하므로 단일 autovacuum 작업자 프로세스를 사용할 때보다 한도에 더 빨리 도달할 수 있습니다. 비용 한도에 더 빨리 도달할수록 비용 지연이 더 자주 적용되어 Timeout:VacuumDelay 대기 이벤트가 더 많이 발생합니다. 자세한 내용은 PostgreSQL 설명서의 autovacuum_max_workers를 참조하세요.

큰 객체(예: 500GB 이상)도 이 대기 이벤트를 발생시킬 수 있습니다. vacuum이 큰 객체의 처리를 완료하는 데 시간이 걸릴 수 있기 때문입니다.

작업

vacuum 작업이 예상대로 완료되면 문제 해결이 필요하지 않습니다. 즉, 이 대기 이벤트가 반드시 문제를 나타내는 것은 아닙니다. 이는 완료해야 하는 다른 프로세스에 리소스를 적용할 수 있도록 지연 파라미터에 지정된 시간 동안 vacuum이 절전 상태로 전환되고 있음을 나타냅니다.

vacuum 작업을 더 빨리 완료하려면 지연 파라미터를 낮추면 됩니다. 이렇게 하면 vacuum의 절전 시간이 단축됩니다.