항해88 - day82

Dasole Kwon·2022년 7월 29일
0

항해99

목록 보기
45/47

정말 오랜만에 TIL을 쓴다........

실전 프로젝트가 바쁘다는 핑계로 하나도 쓰지 못했다ㅠㅠ
저번주부터 SSE 기능 구현 + AWS HTTPS 구축으로 에러도 엄청나게 많이났고 다른 기능들도 오작동 하는 것이 많아 고치느라 하루하루가 어떻게 지나갔는지 모르겠다.

이번주에 엄청나게 봤던 지긋지긋한 에러........

->
->

우선, SSE를 적용하면서 제일 크게 실수 했던 것은 메모리를 생각하지 않았던 것!
sse는 처음 HTTP 연결을 맺고 나면 서버는 클라이언트로 계속하여 전송을 보낸다.
최대 동시 접속수는 HTTP/1.1의 경우 브라우저 당 6개이며, HTTP/2는 100개까지 가능하다고 하는데, 그걸 인지하지 못하고 진행했다가 사람이 몰리거나 요청이 몰리면 지긋지긋한 히카리에러(pool size)가 떴다.
우리는 해당 프로젝트에 Nginix를 쓰지 않고 있기 때문에 구독이 실시간으로 날라 오는 것을 버텨주지 못했던 것 같다. 당장 배포를 앞두고 있기 때문에 nginix 구축은 시간적으로 넉넉하지 않을 것 같아 급한대로 hikari pool을 임의로 늘려보았다.

Tn : 전체 Thread 갯수
Cm : 하나의 Task에서 동시에 필요한 Connection 수
HikariCP wiki에서는 이 공식대로 Maximum pool size를 설정하면 Dead lock을 피할 수 있다고 한다.

20으로 늘려보았지만, 근본적인 문제는 해결되지 않았다. 실시간으로 늘어나는 activated pool 를 우선 막아보아야 할 것 같았다. 코드를 뜯어보니 sse에서 쓰고 있는 커넥션을 제대로 반납해주지 않았기 때문에(커넥션을 제대로 close해주지 않았기 때문에) 생기는 오류같았다.

> try{
  여기서 본처리
    }catch() {
    }finally {
    connection.close()
  }
  -> 이런식으로

그래서 상기내용과 같이 코드를 수정해보았으나, 서버가 터지지않고 버텨주는 시간이 조금 길어졌을 뿐 이번에는 heap space 오류가 자꾸 떴다....이때 부턴 정말 뇌절할뻔함ㅋ

팀원분과 함께 오류를 계속 구글링하며 찾아보았더니, 일단 heap 메모리는 JVM 이라는 자바 가상머신에서 할당하는 메모리인데 프리티어에서 주어지는 1gb 의 램(메모리)의 1/4이 할당된다고 한다. 명령어를 쳐서 heap메모리 확인했을때도 max가 250mb로 할당되어져 있는거를 확인했습니다. 구글링을 했을때 java -jar를 실행 시킬 때 저 메모리값을 늘려서 할당할 수 있다는데 어제 했던 방식은 뭔가 먹히지 않았던것 같아 다른 방법을 찾거나 램이 4gb인 컴퓨터를 빌려서 1gb의 heap 메모리를 할당 받을 수 있는 방법이 있다고 팀원분이 해결방안을 찾아주었다!

결국엔 돈이 좋은거지......... 결국 AWS에서 4GB짜리를 구입했더니 모든게 해결^^... 여러분들 혹시나 heap space 에러가 나고, nginix를 쓰지 않는데 SSE를 구현하시는 분들은 그냥 메모리를 사세요 얼마안해요^^

어쨌든 해당 오류를 통해 3일간은 잠도 제대로 못자고 고생했지만, 정말 몰랐던 부분에 대해 살짝이라도 발을 담궈본듯하다. 그리고 ngnix를 아무래도 구축해야할 것 같다는 생각이 강하게 들어서 프로젝트를 디벨롭할 때 적용 할 계획이다.
너무너무 힘들었던 주였지만, 배포도 성공적으로 하였고 서버도 제대로 돌아가고 있어서 너무 행복하다 흐규흐규ㅠㅠ

개발바닥을 사용해보시고 정성스러운 피드백을 주신 분들께 소정의 상품을 드립니다.
진짜 프로젝트를 작성하시지 않아도 됩니다! 기획자와 참여자의 입장에서 다양하게 사용해보세요

정성스러운 피드백을 주신 1분께 신세계 상품권 💰 50,000원권,
5분께 신세계 상품권 💵 10,000원권,
20분께 스타벅스 아메리카노 ☕️ 기프티콘이 카카오톡 선물하기로 전달될 예정입니다!
🐾
개발바닥은 프로젝트 팀원을 모집하는 개발자 커뮤니티 사이트입니다.
멋진 기획을 가지고 계시다면 개발바닥에서 열정 넘치는 팀원을,
한걸음 더 성장하고 싶으시다면 개발바닥에서 다양한 프로젝트를 만나보세요

팀원을 모집하고 싶으시다면 프로젝트에 대한 소개와 일정 등을 담은 게시글을 작성하시고
프로젝트에 지원한 사람들과 프로젝트를 이끌어보세요! 🤟
프로젝트에 참가하고 싶으시다면 모집 중인 프로젝트의 자세한 내용을 확인하고 지원해보세요! 프로젝트 기획자가 수락하시면 팀원이 되어 프로젝트에 참여하실 수 있습니다! ❤️‍🔥
🍀🍀🍀🍀🍀https://dogpaw.kr/🍀🍀🍀🍀🍀

다음주 최종 발표를 앞두고 유저테스트도 받고, 수정해야할 부분도 엄청나게 많겠지만 얼마 남지 않았으니 화이팅!!!!!!! 우리 조 화이팅🥹

참고자료: https://techblog.woowahan.com/2664/

0개의 댓글