얼마전 https 접속을 지원하는 서비스 배포후
서비스가 약 4일만에 웹브라우저로 접근불가 상태임을 확인했다
로그를 확인하기 위해 ssh 접속을 시도 했지만
kex_exchange_identification: read: Connection reset by peer
Connection reset by xxx.xx.xxx.xx port xx
서버에서 응답이 없었다
브라우저에서 http/s 접근이 불가하다는것은 서비스가 정지 되었다는것이고
ssh 접속이 불가능 하다는것은
리눅스 서버의 서비스 하나가 문제가 있는것이 아니라
서버로 사용중인 인스턴스 자체에 장에가 있었을것이라고 추측했다
오라클클라우드에서는 특별한 알람은 없었고
트라이얼 계정의 인스턴스 자원 대비 과한 처리량 때문에 커널패닉같은것이 온것이라 추측했다
사용된 리소스 차트를 살펴 봤다
배포 후 100프로에 가까워지는 차트를 확인했다
아마 요청 처리에 지연이 발생하면서 버티다가
3월2일에 19:40 ~20:30 까지 50분 동안의 서버 정지가 있었고
3월 4일 19시 40분 이후로 서버가 죽었던 것이였다
왜 50분뒤 서버가 다시 동작했고
무었때문에 서버가 완전히 정지했는지는 알수 없었다
(UTC기준이기 때문에 9시간을 더하면 한국시간임)
문제가 생기기 전후로 있었던 서비스 배포파일의 로그를 확인해 봤다
https 접속을 지원하는 http 접근에 대한 리다이랙팅 작업을 하지않아 발생한 에러 와 아래처럼 생긴 에러 로그 였다
스레드 결핍 or 시간 오차 로그다
앞전의 인스턴스 자원그래프를 봤을때 서버의 스레드 제한 설정이 서버 장애의 원인이라 생각 했다
수정 >
낮은 사양의 인스턴스에 과한 리소스를 요구하는서버 때문에
서버의 딜레이가 있었고
간헐적으로 멈추거나, 시간을 맞추려는 시도가 로그로 누적된것이다
요약
1. 서버가 죽은것은 아니다
2. 서비스와 ssh 접속 모두 문제가 있었던것은 서버에 원인이 있다
3. SML 서비스는 계속 active 상태였고 로그도 기록 되고 있었다
----2024 03/25 갱신 기록-----------------
이 글을 처음 작성할때까진 내 sml 서버에서 메모리를 회수하지못해서
시스템 메모리 사용량이 점진적으로 늘어나다가 더이상 사용할수 있는 메모리가 없을때
서버가 일시 정지 되었고 일시정지가 풀린 후 서버타임이 로컬 타임과 맞지않아
저런 로그가 남겨진것이라고 생각 했다
문제의 원인은 내 sml 서버의 메모리 회수 미숙에 있다고 생각했고
서버의 히커리cp 풀 사이즈를 조정하고 로그를 남겨 살펴 보았다
hikari:
minimum-idle: 5 # 최소 유휴 연결 수
maximum-pool-size: 10 # 최대 풀 사이즈
idle-timeout: 30000 # 유휴 상태의 최대 시간 (ms)
max-lifetime: 2000000 # 커넥션의 최대 수명 (ms)
connection-timeout: 30000 # 커넥션 타임아웃 (ms)
//
logging:
level:
com.zaxxer.hikari.HikariConfig: DEBUG
com.zaxxer.hikari: TRACE
5개의 커넥션중 5개가 아이들 상태였고
대부분의 작업에서 풀 생성이 스킵 되고 있었다
여기서 의문이 생겼다
사실 내sml 서버는 나 이외에 아무도 사용하지않는다..
가끔 네이버나 구글봇이 사이트정보를 가지고갈수도 있겠지만
내가 가끔 사용하는 사이트가 이렇게 자주 데드락이 걸린다고?
Entity 클래스의 GeneratedValue 어노테이션을 사용하지않거나
원할한 메모리 회수를 위해 커넥션수를 조절하는것이 문제가 아닐것이라 생각했다
sml 서비스를 종료하고
메모리 상태를 확인 했다
cockpit 으로 시스템 자원을 확인했을때
sml 서버가 동작하지않을때도 대부분의 자원이 사용되고 있었다
cockpit을 비활성화 한후 # free -h # top 결과
즉 1기가 메모리 인스턴스(트라이얼)에서 데이터베이스도 돌리고 서버도 돌리니까
당연히 메모리가 부족했던것 이었다
sml을 배포한뒤에 메모리를 살펴보았다
mysqld(mariaDB) 와 java(sml jar) 가 정상 동작하고 있으며
변경사항이 얼마만큼의 유효한 의미가 있을지 확인할것이다
인후 서버와 디비를 분활해야겠다
'마구니 패치 노트' 카테고리의 다른 글
서버 해킹 대응 (0) | 2024.06.01 |
---|---|
비밀번호 해싱MD5 > sha256 문제 해결 (0) | 2023.05.19 |
서버타임 동기화 (0) | 2023.05.06 |
자동 배포 개선/기능추가 (0) | 2023.03.31 |
SQL 쿼리 파라미터 바인딩 %?% 문제 (0) | 2023.03.03 |
댓글