전체 글 465

OOM과 Garbage Collector, 그리고 Dump

목차 OOM (Out of Memory) (1) OOM의 발생 원인 OOM과 Garbage Collector의 관계 Dump를 뜨다 MAT 사용법 참고 자료 0. OOM (Out of Memory) 업무를 보다보면 팀 메신저 방에 이따금씩 OOM에 관련된 내용이 공유된다. 메모리가 부족한 에러이니 덤프를 떠서 메모리 누수의 원인을 분석 후 해결방안을 찾으면 되지만, 제대로 이해하고 있다는 느낌이 들지 않았다. 또한 덤프를 뜨는게 해결 방안의 전부인것 같지는 않았다. 이 기회에 관련 용어 및 해결 방안을 정리해보고자 한다. (1) OOM의 발생 원인 공식문서의 언급에 따르면 OOM은 Java의 Heap 메모리가 부족하여 더 이상 가용한 메모리가 없을 경우 발생한다. 대표적으로 아래 2가지 사례로 발생한다...

무중단 배포, 그리고 L4와 L7의 로드 밸런서

순서 무중단 배포란? 무중단 배포 전략 3대장 블루 / 그린 배포 (Blue / Green Deployment) 롤링 배포 (Rolling Update Deployment) 카나리 배포 (Canary Deployment) Nginx가 만능일까? L4 스위치와 L7 스위치, 그리고 Nginx 0. 무중단 배포란? 서비스를 중단하지 않고 배포하는 것을 의미한다. 1월에 점검이 진행되고, 점검날에 1월동안 새로 개발한 코드들을 반영한다고 상상하자. 점검 이전에 실제 서비스에 돌아가던 프로젝트를 v1, 점검 이후 반영되는 신규 프로젝트를 v2라고 가정했을때, v1이 돌아가던 서비스를 종료하고 v2를 배포 + 반영하기까지 서비스가 중단된 시간을 다운타임(downtime)이라고 한다. (1) v1 서비스를 중단시켜..

HackerRank : Fraudulent Activity Notifications

문제 링크 HackerRank : Fraudulent Activity Notifications (Click) 문제 요약 List 타입의 expenditure와 int타입의 d가 아래와 같이 주어진다. expenditure = [10,20,30,40,50] d = 3 중간값의 정의는 해당 글을 참고한다. 예를 들어 위와 같이 d가 3인 경우, n-3, n-2, n-1의 값중 중간값 * 2 이상의 값을 n번째 날이 가질 경우, 고객에게 알림을 보내줘야한다. 10,20,30의 중간값은 20인데, 40의 경우 20*2 이상의 값을 가지므로 알림을 보내야한다. 20,30,40의 중간값은 30인데, 50의 경우 30*2 보다 값이 작으므로 알림을 보낼 필요가 없다. 때문에 위 예시에서 알림을 보내는 개수(정답)는 ..