나는 현재 ec2 마이크로 인스턴스를 실행 중이며 인스턴스에 때때로 메모리가 부족하다는 것을 발견했습니다.
더 큰 인스턴스 크기를 사용하는 것 외에 다른 작업을 수행 할 수 있습니까?
나는 현재 ec2 마이크로 인스턴스를 실행 중이며 인스턴스에 때때로 메모리가 부족하다는 것을 발견했습니다.
더 큰 인스턴스 크기를 사용하는 것 외에 다른 작업을 수행 할 수 있습니까?
답변:
이 문제에 대한 수정 프로그램을 추가하는 것입니다 swap
(즉, paging
인스턴스에) 공간.
페이징은 하드 드라이브에 영역을 만들고 추가 메모리에 사용하여 작동합니다.이 메모리는 일반 메모리보다 훨씬 느리지 만 더 많은 메모리를 사용할 수 있습니다.
이 여분의 공간을 인스턴스에 추가하려면 다음을 입력하십시오.
sudo /bin/dd if=/dev/zero of=/var/swap.1 bs=1M count=1024
sudo /sbin/mkswap /var/swap.1
sudo chmod 600 /var/swap.1
sudo /sbin/swapon /var/swap.1
1024 이상이 필요하면 더 높은 것으로 변경하십시오.
재부팅 후 기본적으로 활성화하려면 다음 행을 / etc / fstab에 추가하십시오.
/var/swap.1 swap swap defaults 0 0
if
'입력 파일', of
'출력 파일', bs
'블록 크기', count
할당하려는 블록 수 등 man
을 의미합니다. 자세한 정보는 명령 페이지를 읽을 수 있습니다 . linux.die.net/man/1/ dd
$> free -m
스왑은 EBS 디바이스가 아닌 인스턴스 스토리지 (일시적) 디스크에서 이루어져야합니다. 교환하면 많은 IO가 발생하고 EBS 비용이 증가합니다. EBS는 또한 인스턴스 스토어보다 느리고 인스턴스 스토어에는 특정 유형의 EC2 인스턴스 가 무료로 제공됩니다 .
일반적으로 / mnt에 마운트되지만 실행되지 않으면
sudo mount /dev/xvda2 /mnt
이 장치에서 스왑 파일을 만들려면 4GB 스왑 파일에 대해 다음을 수행하십시오.
sudo dd if=/dev/zero of=/mnt/swapfile bs=1M count=4096
다른 사용자가 스왑 파일을 볼 수 없도록하십시오
sudo chown root:root /mnt/swapfile
sudo chmod 600 /mnt/swapfile
스왑으로 만들고 플래그 지정
sudo mkswap /mnt/swapfile
sudo swapon /mnt/swapfile
다음을 / etc / fstab에 추가 / 확인하십시오
/dev/xvda2 /mnt auto defaults,nobootwait,comment=cloudconfig 0 2
/mnt/swapfile swap swap defaults 0 0
마지막으로 스왑을 활성화
sudo swapon -a
ajtrichards가 언급 한 단계를 적용한 후이 명령을 사용하여 Amazon 프리 티어 인스턴스가 스왑을 사용 중인지 확인할 수 있습니다.
cat /proc/meminfo
결과:
ubuntu@ip-172-31-24-245:/$ cat /proc/meminfo
MemTotal: 604340 kB
MemFree: 8524 kB
Buffers: 3380 kB
Cached: 398316 kB
SwapCached: 0 kB
Active: 165476 kB
Inactive: 384556 kB
Active(anon): 141344 kB
Inactive(anon): 7248 kB
Active(file): 24132 kB
Inactive(file): 377308 kB
Unevictable: 0 kB
Mlocked: 0 kB
스왑 총계 : 1048572 kB
스왑 무료 : 1048572 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 148368 kB
Mapped: 14304 kB
Shmem: 256 kB
Slab: 26392 kB
SReclaimable: 18648 kB
SUnreclaim: 7744 kB
KernelStack: 736 kB
PageTables: 5060 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1350740 kB
Committed_AS: 623908 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7420 kB
VmallocChunk: 34359728748 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 637952 kB
DirectMap2M: 0 kB
다음 명령을 사용하여 인스턴스에 1GB 스왑을 추가 할 수 있습니다.
sudo dd if=/dev/zero of=/swapfile bs=1M count=1024
sudo mkswap /swapfile
sudo swapon /swapfile
재부팅 후 기본적으로 활성화하려면 다음에 다음 줄을 추가하십시오 /etc/fstab
.
/swapfile swap swap defaults 0 0
/swapfile
. 그러나 다른 파일 시스템을 마운트하고 스왑 파일을 만들 수도 있습니다 (예 :) /mnt/blah/swapfile
.
당신은에있는 경우 t2
인스턴스 ( t2.micro
, t2.medium
, t2.small
), 당신에게 가능한 임시 또는 인스턴스 스토리지가 없습니다. 따라서 EBS
유스 케이스에 따라 좋은 아이디어가 아닐 수도있는 스왑을 작성해야합니다 . 그렇지 않으면 @David의 답변을 따르고 임시 스토리지에서 스왑을 생성하여 EBS 비용 지불을 피하십시오.
추가 정보 : http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html 각 인스턴스 유형에 대해 얼마나 많은 임시 스토리지를 얻는 지 보여주는 표가 있습니다.
For example, if you provision a volume with 1000 IOPS, and keep this volume for 15 days in a 30 day month, then in a Region that charges $0.10 per provisioned IOPS-month, you would be charged $50 for the IOPS that you provision ($0.10 per provisioned IOPS-month * 1000 IOPS provisioned * 15 days/30). You will be charged for the IOPS provisioned on a volume even when the volume is detached from an instance.
. AWS가 읽기 및 쓰기 작업에 대한 비용을 청구하는 것 같습니다.
모든 서버에 스왑 공간을 추가 할 수 있습니다
dd 명령을 사용하여 파일 작성
#dd if=/dev/zero of=/swapfile bs=1M count=2048
or
#dd if=/dev/zero of=/swapfile bs=1024M count=2
bs는 블록 크기 이며 count 는 MB 또는 GB 단위 의 크기를 나타냅니다.
우리는 그 반대로도 사용할 수 있습니다
작성 후 파일의 권한을 변경하십시오.
#chmod 600 /swapfile
그런 다음 파일을 바꿉니다.
#mkswap /swapfile
그런 다음 swapon 명령으로 swap 파일을 활성화하십시오.
#swapon /swapfile
스왑이 활성화되어 있는지 여부를 free 명령으로 확인하십시오.
#free -h
#swapon -s
David의 인스턴스 스토리지 사용 답변은 처음에 (m5d.2xlarge에서) 효과가 있었지만 EC2 인스턴스를 중지하고 다시 켠 후에 인스턴스에 다시 ssh를 넣을 수 없었습니다.
인스턴스 로그는 "비상 모드에 있습니다. 로그인 한 후"journalctl -xb "를 입력하여 시스템 로그를보고,"systemctl reboot "를 재부팅하여"systemctl default "또는"exit "를 입력하여 기본 모드로 부팅하십시오. Enter를 누르십시오. 유지 보수 "
대신이 링크의 AWS 지침을 따르고 인스턴스를 껐다가 다시 켜는 등 모든 것이 완벽하게 작동했습니다.
https://aws.amazon.com/premiumsupport/knowledge-center/ec2-memory-swap-file/
sudo dd if=/dev/zero of=/swapfile bs=1G count=4
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo swapon -s
sudo vi /etc/fstab
/swapfile swap swap defaults 0 0
swapspace를 시도하십시오 http://pqxx.org/development/swapspace/
대부분의 배포판에는 패키지가 있습니다.
EC2에서는 "swappath"를 / mnt 또는 high-iops 디스크로 변경할 수 있습니다.
다음 스크립트를 사용하여 Amazon Linux에서 스왑을 추가 할 수 있습니다.
https://github.com/chetankapoor/swap
wget을 사용하여 스크립트를 다운로드하십시오.
wget https://raw.githubusercontent.com/chetankapoor/swap/master/swap.sh -O swap.sh
그런 다음 다음 형식으로 스크립트를 실행하십시오.
sh swap.sh 2G
완전한 자습서를 보려면 다음을 방문하십시오.