Development
-
client - nginx - backend 호출 흐름에서 nginx accesslog에 499 statusCode가 찍히는 현상이 가끔 발생하였다.어떠한 상황에 발생하는지 알아보도록 하자. 499는 Nginx 전용 로그 코드로 “클라이언트(또는 Nginx 기준의 클라이언트)가 요청을 중간에 끊었다”는 의미-> 즉, 사용자가 직접 연결을 끊었거나, 중간 네트워크가 끊긴 것을 의미 ws - nginx & apache사용자가 요청을 보내고 중간에 페이지를 이탈하거나 앱을 종료하여 연결이 끊길 수 있다. 근데 내가 마주한 상황은 기존에 web server를 apache를 사용할 때는 발생 빈도가 거의 없었지만web server를 nginx로 변경하고부터 이전보다 빈도가 증가했다는 점이다. 이러한 상황이 발..
[Exception] ClientAbortException 발생 확인client - nginx - backend 호출 흐름에서 nginx accesslog에 499 statusCode가 찍히는 현상이 가끔 발생하였다.어떠한 상황에 발생하는지 알아보도록 하자. 499는 Nginx 전용 로그 코드로 “클라이언트(또는 Nginx 기준의 클라이언트)가 요청을 중간에 끊었다”는 의미-> 즉, 사용자가 직접 연결을 끊었거나, 중간 네트워크가 끊긴 것을 의미 ws - nginx & apache사용자가 요청을 보내고 중간에 페이지를 이탈하거나 앱을 종료하여 연결이 끊길 수 있다. 근데 내가 마주한 상황은 기존에 web server를 apache를 사용할 때는 발생 빈도가 거의 없었지만web server를 nginx로 변경하고부터 이전보다 빈도가 증가했다는 점이다. 이러한 상황이 발..
2025.11.18 -
nginx 설정 관련 업무를 진행하다, nginx에 http2 설정을 켜는 방법을 알게 되었다.기존에는 keepalive 설정으로 http1.1을 사용하고 있었는데 http2.0과에 어떤 차이가 있는지 알아보자. HTTP/2 정의 HTTP/2는 HTTP/1.1의 성능 한계를 개선하기 위해 만든 차세대 전송 프로토콜로, 기본적으로 TCP 위에서 동작하며 요청 병렬성 향상, 헤더 압축, 지연 최소화를 목표로 함브라우저 ↔ 서버 간 통신 효율을 극대화하기 위한 버전 HTTP/2 주요 특징구분설명멀티플렉싱(Multiplexing)하나의 TCP 커넥션 위에서 여러 요청/응답을 동시에 처리 가능. (HTTP/1.1은 요청 순서에 막힘 발생: head-of-line blocking)스트림(Stream)요청/응답 단..
[Web] HTTP2.0 & HTTP1.1nginx 설정 관련 업무를 진행하다, nginx에 http2 설정을 켜는 방법을 알게 되었다.기존에는 keepalive 설정으로 http1.1을 사용하고 있었는데 http2.0과에 어떤 차이가 있는지 알아보자. HTTP/2 정의 HTTP/2는 HTTP/1.1의 성능 한계를 개선하기 위해 만든 차세대 전송 프로토콜로, 기본적으로 TCP 위에서 동작하며 요청 병렬성 향상, 헤더 압축, 지연 최소화를 목표로 함브라우저 ↔ 서버 간 통신 효율을 극대화하기 위한 버전 HTTP/2 주요 특징구분설명멀티플렉싱(Multiplexing)하나의 TCP 커넥션 위에서 여러 요청/응답을 동시에 처리 가능. (HTTP/1.1은 요청 순서에 막힘 발생: head-of-line blocking)스트림(Stream)요청/응답 단..
2025.11.10 -
성능 테스트를 진행하기 위해서 타겟이 되는 서비스에서 호출하는 외부 API mocking이 필요하게 되었다. 간단하게 python을 이용하여 웹서버를 띄워서 목적을 달성해 보자. flask자바에서 대표적인 웹 개발 프레임워크는 스프링이다.이와 유사하게 파이썬에서도 flask 웹 개발 프레임워크가 존재한다.이를 이용하여 간단하게 웹서버를 띄울 수 있다. 실행 환경 세팅 sudo apt install python3.12-venvpython3 -m venv venvsource venv/bin/activatepip install flaskpip install gunicornpip install gevent 대체 API 코드 작성 from flask import Flask, jsonify, requestimp..
[Test] 외부 API mocking성능 테스트를 진행하기 위해서 타겟이 되는 서비스에서 호출하는 외부 API mocking이 필요하게 되었다. 간단하게 python을 이용하여 웹서버를 띄워서 목적을 달성해 보자. flask자바에서 대표적인 웹 개발 프레임워크는 스프링이다.이와 유사하게 파이썬에서도 flask 웹 개발 프레임워크가 존재한다.이를 이용하여 간단하게 웹서버를 띄울 수 있다. 실행 환경 세팅 sudo apt install python3.12-venvpython3 -m venv venvsource venv/bin/activatepip install flaskpip install gunicornpip install gevent 대체 API 코드 작성 from flask import Flask, jsonify, requestimp..
2025.09.30 -
지금까지 keepalive timeout이 지나면 tcp 연결이 끊어진다고 이해하고 있었는데 꼭 그런 것만은 아닌 거 같다. Nginx Nginx의 경우에는 http 블록의 keepalive timeout 설정은 client-nginx 간의 연결에 대한 설정이다. 만약 해당 설정을 0이라면 client-nginx 간의 tcp 연결은 매번 다시 맺어야 한다. 이렇게 알고 있어서 keepalive는 tcp 연결과의 관계라고만 생각했다. Load Balancer하지만 Nginx 이외에 Cloud 상품인 Load Balancer의 keepalive timeout에 대해서 알아보게 되었는데여기서는 keepalive timeout이 0이면tcp 연결은 유효하지만 http 세션이 끊긴다. (persistent c..
Keepalive -TCP/HTTP지금까지 keepalive timeout이 지나면 tcp 연결이 끊어진다고 이해하고 있었는데 꼭 그런 것만은 아닌 거 같다. Nginx Nginx의 경우에는 http 블록의 keepalive timeout 설정은 client-nginx 간의 연결에 대한 설정이다. 만약 해당 설정을 0이라면 client-nginx 간의 tcp 연결은 매번 다시 맺어야 한다. 이렇게 알고 있어서 keepalive는 tcp 연결과의 관계라고만 생각했다. Load Balancer하지만 Nginx 이외에 Cloud 상품인 Load Balancer의 keepalive timeout에 대해서 알아보게 되었는데여기서는 keepalive timeout이 0이면tcp 연결은 유효하지만 http 세션이 끊긴다. (persistent c..
2025.09.26