회사 앞에 팝업스토어로 운영되는 상가가 있다. 그래서 아침에 출근하다보면 공사하는 것을 보게된다.

  공사할 때마다 건축폐기물이 꽤 나오는 것 같다. 물론 일부 재료들은 재활용 할 수 있을 것 같긴하다. 그러나 다 부분은 재활용 할 수 없고 그냥 폐기될 것 같다. 

이렇게 쓰레기를 많이 만들어도 되는 것인지 모르겠다. 

평소에는 이런 생각 안했을 텐데. 이번 여름이 너무 더웠다보니 이런 생각을 하게된다.

 회사에서 사용하는 테스트용 클라우드 서버를 ubuntu 20.04 에서 ubuntu 22.04 로 업그레이드 한 후 가끔식 서버가 먹통이 되는 현상이 발생하고 있다. 웹서버가 동작하지 않고 ssh 조차 접속되지 않는 현상이 가끔씩 발생했다. 이 현상이 발생하면 cloud 서버 관리 사이트에 들어가서 강제로 재부팅을 시키곤 했다. 

 로그를 분석해 보면 cron 서버스가 동작하면서 밤사이 CPU 사용률이 100%가 되는 현상이다. 그래서 우선 불필요한 cron 서비스를 제거했다. 어차피 테스트 서버라서 잘 작동하지 않아도 문제될 것은 없다. 그러다 평소 습관대로 free -h 명령어를 사용해 보았다. 이 명령어는 메모리가 어떻게 사용되고 있냐를 확인하는 명령어 이다. 그런데 swap 메모리가 전혀 사용되지 않는 것을 확인 했다. 

               total        used        free      shared  buff/cache   available
Mem:           ...............................................
Swap:          8.0Gi          0B       8.0Gi

대충 위와 같이 swap 의 used 가 0 인 것을 발견했다. 

이 서버가 테스트 서버인지라 메모리가 2G가 안된다. 그래서 Postgresql 돌리고 웹서버 돌리고 하는데, 메모리가 좀 많이 필요한 편이다.(그리고 웹서비스도 2개가 돌아간다.) 그래서 처음 세팅시 swap 을 설정해서 가상 메모리를 사용하고 있다.(이 값이 설정안되면 파이썬 라이브러리가 설치가 안되는 문제도 가끔씩 발생된다.)  어차피 테스트 서버라 속도가 좀 늦어도 상관없다. 그래도 하드가 SSD 라 꽤 괜찮은 속도를 유지하고 있는 편이다.

서버가 가끔식 먹통이 되는게 swap 이 동작하지 않은게 원인 같았다. 내 추론으로는 메모리가 부족해서 프로그램이 돌다가 엄청나게 느려지거나  sagement fault 이 발생하면서 큰 문제를 일으킨 것으로 생각하는게 맞을 것 같다. 뭐, 더 이상 문제가 발생하지 않는다면 swap 이 동작하지 않는게 원인이겠지.

어째든 찾아보니 vm.swappiness  라고 하는 설정이 있었다. 이 값으로 swap 메모리를 어떠한 비율로 사용할 것인지 결정하는 값이 있었다. 이 테스트 서버의 경우 0 으로 설정되어서 전혀 사용하지 않음으로 설정된 상태였다. (자세한 설정은 vm.swappiness 으로 검색해 보기 바란다.)

이 값을 기본값인 60으로 설정하고 나니 swap 메모리를 사용하기 시작했다. 

다른 서버들을 확인해보니 이 cloud 서버들만 vm.swappiness 가 0 으로 설정되어있었다. 실제 서비스 서버는 메모리가 충분한 상태이기 때문에 변경은 필요 없어 보였다.

가끔씩 클라우드마다 다른 설정값을 보이는 경우가 있다. 내 생각에는 클라우드마다 ubuntu 서버를 수정해서 배포하는 것 같다. 그러다보니 여러 클라우드를 사용하다보면 좀 다양한 현상을 겪게 된다. 

 

어째든 이번일은 이것으로 마무리 되고 더 이상 문제가 안 생기기를 바란다. 

 

 

 내 개인 클라우드 서버에서 certbot 을 이용해서 https 인증서를 사용하고 있었다. 그런데 이게 동작하지 않아서 한참 원인을 찾다보니 godaddy API 가 더이상 동작하지 않음을 알게 되었다. 내 경우 root 도메인 인증서 발급을 위해 DNS 인증 방식을 사용하고 있다. 좀더 자세히 설명하면 내가 이 도메인의 주인임을 증명하기 위해 DNS 의 txt 레코드를 변경해서 인증하는 방식을 사용하고 있다. 그런데 이 동작을 자동화하기 위해서는 DNS 서버에서 제공하는 API가 필요하다. 

 어째든 godaddy API 가 더 이상 무료가 아니게 되면서 문제가 발생했다. 이런. 다른 무료 DNS 서버 제공업체를 찾아야 할 것 같다. 일이 귀찮게 되었다.