celina의 이것저것
[ec2] 인스턴스 연결성 검사 실패, Thread starvation or clock leap detected 본문
[ec2] 인스턴스 연결성 검사 실패, Thread starvation or clock leap detected
celinayk 2024. 11. 27. 18:50
종종 이렇게 ec2인스턴스 연결성 검사가 실패했다는 문구가 뜬다.
이 문제는 다음과 같은 운영 체제 수준 오류로 인하여 발생한다고 한다.
aws공식 문서에 나와있다.

내 인스턴스의 cpu사용률을 봤더니..
99.9%를 찍고 있었다...^_^, 이게 100프로 원인을 아닐수 있지만 일단 cpu사용률 99.9프로는 말도 안되기 때문에 고칠필요가 있었다.
그리고 로그를 보면
Thread starvation or clock leap detected 이런 경고가 있었다. 역시 cpu가 문제 같다.
해결방법
그래서 스왑 메모리를 설정해주었다.
swap memory란?
메모리가 부족하거나, 추가적인 필요량을 만들기 위해서 하드디스크의 일부를 메모리로 할당시키고,
메모리로만 사용하는 방식
1. dd명령어로 swap메모리 할당한다. 128씩 16개의 공간을 만든다.
sudo dd if=/dev/zero of=/swapfile bs=128M count=16
명령어의 각 뜻은
- if=/dev/zero:
- 빈 데이터로 채워진 파일을 생성
- of=/swapfile:
- 출력 파일을 /swapfile로 지정
- bs=128M:
- 한 번에 128MB씩 데이터를 사용
- count=16:
- 128MB 블록을 16번 사
- 총 크기 = 128MB × 16 = 2048MB (2GB)
2. 스왑 파일에 대한 일기 및 쓰기 권한을 업데이트
$ sudo chmod 600 /swapfile
3. Linux 스왑 영역 설정
$ sudo mkswap /swapfile
4. 스왑 공간에 스왑 파일을 추가하여 스왑 파일을 즉시 사용할 수 있게 만든다
$ sudo mkswap /swapfile
5. 성공했는지 확인
$ sudo swapon -s
6. /etx/fstab 파일을 편집하여 부팅 시 스왑 파일 활성화한다. 편집기에서 파일 오픈
$ sudo vi /etc/fstab
7. 파일 끝에 새로 추가하고 저장후 종료
/swapfile swap swap defaults 0 0
8. 적용됐는지 스왑상태 확인
free -h
top
total used free shared buff/cache available
Mem: 957Mi 699Mi 127Mi 900Ki 282Mi 257Mi
Swap: 2.0Gi 0B 2.0Gi
top - 08:33:55 up 14 min, 1 user, load average: 0.00, 0.07, 0.09
Tasks: 106 total, 1 running, 105 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.0 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 957.4 total, 127.1 free, 699.5 used, 282.4 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 257.9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
864 mysql 20 0 1327576 364508 8704 S 0.3 37.2 0:03.90 mysqld
2083 ubuntu 20 0 12368 5760 3584 R 0.3 0.6 0:00.01 top
1 root 20 0 22032 13260 9420 S 0.0 1.4 0:03.85 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pool_workqueue_rele+
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/R-rcu_g
5 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/R-rcu_p
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/R-slub_
7 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/R-netns
9 root 20 0 0 0 0 I 0.0 0.0 0:00.04 kworker/0:1-events
10 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-events+
12 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/R-mm_pe
13 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_rude_kthr+
14 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_trace_kth+
15 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0
16 root 20 0 0 0 0 I 0.0 0.0 0:00.11 rcu_sched
17 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
참고
https://sundries-in-myidea.tistory.com/102
AWS EC2 프리티어에서 메모리 부족현상 해결방법
AWS free tier를 사용하다보면 2%가 부족할 때가 있다. AWS 프리티어는 가난한 대학생에게는 한줄기 빛과 같은 존재인데, AWS의 프리티어라서 적게 돈이 나가는 것도 좋고, 실제로 이것저것 해볼 수 있
sundries-in-myidea.tistory.com
https://jangsarchive.tistory.com/149
[Infra] 난 도커만 하면 다 괜찮을 줄 알았지...(어. 안돼. 그건 사실이야.)
도커로 프로젝트를 올렸다. 근데 계속 터졌다. 분명 잘 됐는데? 분명 문제 없었는데? 분명 컴파일하고 실행하는데 에러가 없는데 왜 꺼질까? 실행시키고 온갖 요청을 할 때 docker logs ${container}로
jangsarchive.tistory.com