>데이터 베이스 >MySQL 튜토리얼 >Amazon EC2 마이크로 인스턴스에서 \'InnoDB: mmap failed; errno 12\'와 함께 MySQL이 충돌하는 이유는 무엇입니까?

Amazon EC2 마이크로 인스턴스에서 \'InnoDB: mmap failed; errno 12\'와 함께 MySQL이 충돌하는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-03 10:12:14478검색

Why is MySQL Crashing with

Amazon EC2 마이크로 인스턴스에서 "InnoDB: mmap failed; errno 12"로 인해 MySQL이 충돌합니다.

MySQL이 초기화를 시도할 때 오류가 발생합니다. 버퍼 풀이 부족하고 리소스 부족으로 인해 메모리 할당 오류가 발생합니다. 이 문제는 메모리 용량(613MB)이 ​​제한된 Amazon EC2 마이크로 인스턴스에서 자주 발생합니다.

오류 메시지:

InnoDB: mmap(549453824 bytes) failed; errno 12
InnoDB: Completed initialization of buffer pool
InnoDB: Fatal error: cannot allocate memory for the buffer pool
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Unknown/unsupported storage engine: InnoDB
[ERROR] Aborting

원인:

  • 부족 메모리: MySQL의 버퍼 풀 크기(512MB)가 마이크로 인스턴스에서 사용 가능한 메모리를 초과합니다.
  • 스왑 공간 없음: 마이크로 인스턴스에는 기본적으로 활성화된 스왑 공간이 없습니다. 가상 확장에 필요 메모리.

해상도:

1. 스왑 공간 활성화:

  • dd if=/dev/zero of=/swapfile bs=1M count=1024를 사용하여 스왑 파일을 생성합니다.
  • 스왑 공간 설정 mkswap /swapfile을 사용합니다.
  • swapon을 사용하여 스왑 파일을 활성화합니다. /swapfile.
  • /etc/fstab에 /swapfile 스왑 스왑 기본값 0 0을 추가하여 스왑 파일을 영구화합니다.

2. 메모리 용량 늘리기:

  • 더 많은 메모리를 갖춘 더 큰 인스턴스 유형으로 업그레이드하거나 Amazon RDS를 활용하는 것이 좋습니다.

3. MySQL 메모리 설정 확인:

  • MySQL의 메모리 변수(예: innodb_buffer_pool_size)가 사용 가능한 리소스에 대해 적절하게 설정되어 있는지 확인하세요.

4. MySQL 로드 감소:

  • MySQL 쿼리를 최적화하여 리소스 소비를 줄입니다.
  • 캐싱 메커니즘을 사용하여 데이터베이스 로드를 최소화하는 것을 고려하세요.

예제 my.cnf 구성:

[mysqld]
innodb_buffer_pool_size = 256M  # Adjust based on available memory

이러한 단계를 구현하면 "InnoDB: mmap failed; errno 12" 오류를 해결하고 Amazon EC2 마이크로 인스턴스에서 MySQL이 원활하게 실행되도록 할 수 있습니다.

위 내용은 Amazon EC2 마이크로 인스턴스에서 \'InnoDB: mmap failed; errno 12\'와 함께 MySQL이 충돌하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.