메인 페이지 API 성공률 개선 (With Nginx)

Rookedsysc·2024년 8월 3일
0

문제 발생

Nginx로 롤링배포를 하고 나서 성능측정을 했다. 내부 ip로 API 요청을 보낼 때는 응답속도가 느릴지언정 1000TPS도 견디는 강력한 서버였다. 하지만 Nginx로 설정을 한 이후

30%나 되는 Request가 실패하는 현상이 발생했다.

문제 해결을 위한 조건

https://api.gamemuncheol.com/open-api/posts/page/new 에 호출시 응답이 느릴지언정 결국 응답이 되기는 하는 서버를 만들어보자!

문제 해결 방법 탐색

Buffer Size 조정

이를 해소하기 위해서 Nginx 쿡북이라는 책을 사고 한 번 쭉 읽은 후 Nginx가 응답을 버퍼링할 때 데이터의 양이 너무 많기 때문에 그런가..? 하는 생각이 들었다.

그래서 nginx.conf에서 proxy buffer size를 더 늘려주었다.

            proxy_buffer_size 16k;   # 헤더가 큰 경우 이 값을 늘릴 수 있습니다.
            proxy_buffers 8 32k;     # 더 많은 버퍼로 조정하여 더 많은 데이터를 메모리에 보관
            proxy_busy_buffers_size 64k;  # 더 많은 메모리 사용을 허용
            proxy_temp_file_write_size 64k;  # 임시 파일 쓰기 크기 늘리기
  • 조정 후 성능 테스트 결과 👇

Proxy Send Timeout & Retry 횟수 설정

Proxy Send Timeout과 Read Timeout Connect Time Out을 크게 늘린 후 또 한 번 성능 테스트를 진행했다.

            proxy_send_timeout 1800s;  # 요청을 보내는 타임아웃을 늘림
            proxy_read_timeout 1800s;  # 응답을 받는 타임아웃을 늘림
            proxy_connect_timeout 3600s;  # 연결 타임아웃을 늘림

            # 실패한 요청 재시도 
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            proxy_next_upstream_timeout 1800s;  # 재시도 허용 시간
            proxy_next_upstream_tries 10;  # 최대 재시도 횟수
  • 조정 후 성능 테스트 결과 👇

결과

API 성공률이 1000TPS에서 70% -> 95%로 개선되었음을 알 수 있다!

0개의 댓글