9oormthonUNIV/[kakao x goorm] 구름톤 유니브 단풍톤

[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