이 문서 내용은 좀 낡았습니다.
60일이나 편집 안된 오래된 망한 문서니 개발 문서인 경우 참고할 때 조심하세요. 최신 정보를 알고 싶으면 게시판에 글 써주세요


목차

1. 서론
2. 정말 느려졌는가?
3. 왜 느려졌는가?
4. 해결 방법은?

1. 서론

Golang을 도입한 이후로 더 느려졌다는 의견과 왜 그런가를 분석해보는 글

2. 정말 느려졌는가?

이에 대해서 설명하자면 결론부터 말하자면 일부 환경에서는 더 느려진 게 맞다

초반에는 대부분의 환경에서 빨랐으니 갈수록 점점 느려졌다

그 이유를 아래에서 추가로 설명하려고 한다

3. 왜 느려졌는가?

현재 오픈나무의 동작 구조는 app.py가 실행되고 사용자가 라우터에 접속하면 라우터 함수를 동작하도록 한다

근데 과거에는 라우터 함수가 파이썬 Only 였으므로 메모리에 올라가고 그 뒤로 안정적으로 쭉 유지되었다

그러나 현재의 구조는 이 라우터 함수가 Golang 바이너리 파일을 실행하도록 되어 있다

이게 현재에서는 문제가 되고 있다

처음 이 구조를 도입할 때는 Golang 바이너리가 그렇게 무겁지 않았으므로 메모리에 적재해야할 데이터도 적었다

그러나 현재는 이게 상당히 무거워졌고 저 라우터에 접속할 때마다 Golang 바이너리 파일을 메모리에 올려야 하므로

메모리 환경이 영 별로고 IO 성능이 영 별로라면 이전보다도 극단적으로 느려지는 것이다

4. 해결 방법은?

현재 생각해보는 방법은 Golang 바이너리를 처음 실행하면 안 꺼지게 하는 것이다

그래서 아예 Gin을 올려서 따로 포트 할당해서 웹 서버 2개로 동작하게 하려고 계획하고 있으나...

이 구조는 문제는 오픈나무를 끌 때 Golang 바이너리로 꺼줘야 하는 데... 그게 맘처럼 잘 될 진 모르겠다 잘 안되면 바로 메모리 누수인데...

일단 올렸다 조금 나아졌나...?