Aurora MySQL 데이터베이스의 메모리 부족 문제 해결
The Aurora MySQL aurora_oom_response
인스턴스 수준 파라미터를 사용하면 DB 인스턴스가 시스템 메모리를 모니터링하고 다양한 명령문 및 연결에서 소비되는 메모리를 예측할 수 있습니다. 시스템 메모리가 부족해지면 시스템은 이 메모리를 해제하려고 시도하는 작업 목록을 수행할 수 있습니다. 메모리 부족(OOM) 문제로 인한 데이터베이스 재시작을 피하려고 시도하는 과정에서 그러한 작업 목록을 수행합니다. 이 인스턴스 수준 파라미터는 메모리가 부족할 때 DB 인스턴스가 수행하는 쉼표로 구분된 작업 문자열을 사용합니다. aurora_oom_response
파라미터는 Aurora MySQL 버전 2 및 3에서 지원됩니다.
다음 값과 그 조합을 aurora_oom_response
파라미터에 사용할 수 있습니다. 문자열을 비워두면 어떠한 작업도 수행하지 않는다는 뜻이며 해당 기능이 사실상 해제되어 데이터베이스가 OOM으로 인해 재시작되기 쉽습니다.
-
decline
– DB 인스턴스 메모리가 부족해지면 새 쿼리를 거부합니다. -
kill_connect
- 많은 양의 메모리를 사용하는 데이터베이스 연결을 닫고 현재 트랜잭션과 데이터 정의 언어(DDL) 문을 종료합니다. 이 응답은 Aurora MySQL 버전 2에서 지원되지 않습니다.자세한 내용은 MySQL 설명서의 KILL statement
를 참조하세요. -
kill_query
– 인스턴스 메모리가 하한값 이상이 될 때까지 메모리 사용량이 많은 순서로 쿼리를 종료합니다. DDL 문이 종료되지 않습니다.자세한 내용은 MySQL 설명서의 KILL statement
를 참조하세요. -
print
- 많은 양의 메모리를 사용하는 쿼리만 인쇄합니다. -
tune
– 내부 테이블 캐시를 조정하여 일부 메모리를 시스템으로 돌려줍니다. Aurora MySQL은 메모리가 부족해지면table_open_cache
,table_definition_cache
같은 캐시에 사용하는 메모리를 줄입니다. 그리고 시스템의 메모리가 부족해지지 않게 되면 이러한 캐시에 사용하는 메모리를 정상 수준으로 되돌립니다.자세한 내용은 MySQL 설명서의 table_open_cache
및 table_definition_cache 를 참조하세요. -
tune_buffer_pool
- 버퍼 풀의 크기를 줄여 일부 메모리를 확보하고 데이터베이스 서버가 연결을 처리하는 데 사용할 수 있도록 합니다. 이 응답은 Aurora MySQL 버전 3.06 이상에서 지원됩니다.tune_buffer_pool
을aurora_oom_response
파라미터 값 중kill_query
또는kill_connect
와 짝지어야 합니다. 그러지 않으면 파라미터 값에tune_buffer_pool
을 포함하더라도 버퍼 풀 크기가 조정되지 않습니다.
3.06 미만의 Aurora MySQL 버전에서 메모리가 4GiB 이하인 DB 인스턴스 클래스의 경우, 인스턴스에 메모리 부족 현상이 발생하면 기본 작업에 print
, tune
, decline
, kill_query
등이 포함됩니다. 메모리가 4GiB보다 큰 DB 인스턴스 클래스의 경우, 파라미터 값은 기본적으로 비어 있습니다(비활성화됨).
Aurora MySQL 버전 3.06 이상에서는 메모리가 4GiB 이하인 DB 인스턴스 클래스의 경우, Aurora MySQL은 메모리를 가장 많이 소비하는 연결도 종료합니다(kill_connect
). 메모리가 4GiB보다 큰 DB 인스턴스 클래스의 경우, 기본 파라미터 값은 print
입니다.
메모리 부족 문제가 자주 발생하는 경우, performance_schema
가 활성화되면 메모리 요약 테이블
OOM과 관련된 Amazon CloudWatch 지표에 대해서는 Amazon Aurora에 대한 인스턴스 수준 지표의 내용을 참조하세요. OOM과 관련된 글로벌 상태 변수는 Aurora MySQL 글로벌 상태 변수의 내용을 참조하세요.