Skip to content

kace|homebuilder.or.kr

Incident Details

  • Incident Date: 2024-02-13
  • Incident Time: 04:09 ~ 17:37
  • Incident Description:

웹서버에 접근이 안되는 상황이었음.

  • ssh 호스트명: sknk-prod-kace-new
  • cafe24 가상 서버 호스팅
  • ukace.or.kr 호스트 apm 환경으로 운영
  • 문제가 되는 도메인은 multipass old instance.
  • 내부 인스턴스의 /var/www/old 호스트의 ~/old로 마운트
  • 호스트 아파치 가상호스트 설정에 ukace|kace|homebuilder.or.kr 3개
  • 문제의 도메인은 php5.6-fpm 내부 인스턴스 아이피 10.161.140.179를 바라보는 리버스 프록시 설정.
  • 처음에는 환경 파악을 안하고 호스트 apm 재시작을 시도.
  • 해결이 되지 않아 조사해보니 놀랍게도 내가 한건데 전혀 기억이 안남.
  • https://github.com/sknkwoxs/kace/tree/develop/provision/old
  • 미래의 서버 관리자와 대화하기 위한 문서를 통해 파악완료.
  • 내부 인스턴스에서 서비스되는 걸로 보아 cloudflare 터널이 있을 듯 했으나, fpm 리버스 프록시였음.

어쨌든 multipass로 인스턴스 제어가 되지 않아서 데몬 재시작.

sudo snap stop multipass.multipassd
sudo snap start multipass.multipassd
multipass stop old
multipass start old

다행히 무사히 인스턴스 잘 올라옴. 로그인해보니 disk full 상태. old 인스턴스 루트 파티션 9GB. 사실 데이터 추가가 없기 때문에 걱정할 필요는 없음. 평상 시 디스크 사용량은 디비가 거의 전부. 절반이상 여유가 있음.

/dev/sda1 9.6G 4.4G 5.2G 46% /

Root Cause Analysis

  • mysql:://kace.xe_session 테이블이 3GB 가량 차지

상태 확인

  • disk full 로그 문제가 아니었음.
  • apache2도 호스트에 있어서 웹서버 관련 큰 로그가 쌓이지 않고 mysql 로그는 매우 작음.
sudo su
mysql kace -e "TRUNCATE xe_session;"
cd /var/lib/mysql/kace
ls -alh xe_session.*
-rw-r----- 1 mysql mysql 3.1M Feb 14 09:25 xe_session.MYD
-rw-r----- 1 mysql mysql 1.6M Feb 14 09:25 xe_session.MYI
-rw-r----- 1 mysql mysql 8.6K Sep 8 2022 xe_session.frm

Impact

약 13시간 가량 서비스할 수 없었지만, 백업용으로 열어놓은 사이트라 고객 측 치명적인 손해는 없었음.

Corrective and Preventive Measures

  • 매일 00:00 cronjob 추가 mysql kace -e "TRUNCATE xe_session;"
  • 이렇게 하면 사실 다시 비슷한 종류의 오류는 발생할 확률은 극히 작아짐
  • disk full 상태가 되면 multipass 인스턴스에 접근이 안되기 때문에 lxc로 이전 고려.