- 방문자수
전체 방문자
오늘 방문자
어제 방문자
인기 길
-
[Server] netstat 명령어 - 네트워크 통계 정보
netstat이란 network statistics의 약자 네트워크 접속, 라우팅 테이블, 네트워크 인터페이스의 통계 정보를 보여주는 도구 netstat 옵션 -a : 현재 다른 PC와 연결(Established)되어 있거나 대기(Listening) 중인 상태 -l (listen) : 연결 가능한 상태 -t (tcp) : tcp -u (udp) : udp -p : 프로그램 이름 / PID -n (number port) : 포트 넘버 netstat field 정보 $ netstat -antplF Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN - - Pro..
-
[DOCKER] Docker restart 옵션
linux 서버에 docker를 설치하고 실행하면 docker daemon을 stop 하거나 종료할 일이 거의 없지만 만약, local PC에서 docker desktop을 사용한다면 pc를 재부팅할 때마다 docker daemon을 종료할 경우도 생긴다. 이러한 경우 다시 docker daemon을 재시작하는 경우 내부에 docker container의 start 관련 동작을 설정할 수 있다. restart option docker run -d --restart {option} redis no Don't automatically restart the container (default) on-failure[:max-retries] container가 정상적으로 종료되지 않은 경우(exit code가 0이..
-
[Nginx] nginx keepalive 설정(client-nginx-tomcat)
keepalive란 서버와 클라이언트가 맺은 연결을 유지하는 방식을 의미 HTTP 트랜잭션이 완료된 후에도 클라이언트와 서버 간의 TCP 연결을 열어둔다. 클라이언트가 다른 HTTP 트랜잭션을 수행해야 하는 경우 새 TCP 연결을 만드는 대신 유휴 Keepalive 연결을 사용한다. 장점 3-way handshacking overhead 줄임 단점 메모리 사용 증가 - connection을 열고 대기 server - keepalive 설정 https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout 하위에 해당하는 server 블록에 keepalive-timeout 설정 기본값 75s 해당 값에 0을 설정하면 keepalive 기능..
-
[NGINX] client ip설정 (proxy_set_header, remote_addr, http_x_forwarded_for, proxy_add_x_forwarded_for)
location 하위 블록에 proxy_set_header를 통해서 X-Forwarded-For, X-Real_IP와 같은 header를 세팅한다. 그러면 Tomcat과 같은 WAS Layer에서 해당 설정을 읽어서 IP 정보를 사용하게 된다. user nginx; worker_processes 2; ... http { include mime.types; upstream back-server { server 127.0.0.1:3000; keepalive 32; } ... server { ... location / { proxy_pass http://back-server; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP..
-
[Tomcat] connection, thread, keep-alive 설정 살펴보기
외장 Tomcat을 이용하여서 운영하던 서비스를 Spring Boot에서 제공하는 내장 Tomcat으로 전환하기로 하였다. 그 과정에서 Tomcat server.xml 설정의 Connector 내용을 spring boot 설정으로 옮기게 되었다. 각 설정들의 값들 중에 connection, thread에 해당하는 값들을 살펴보도록 하자. Thread server.tomcat.threads.max: 200 server.tomcat.threads.min-spare: 10 해당 값들은 application.yml에 "server.tomcat.." 설정을 하지 않았을 때의 default값들이다. ( https://docs.spring.io/spring-boot/docs/current/reference/html/..
최신 글
-
[SpringCloudGateway] Response Body 확인/수정
Spring-cloud-gateay에서 아래의 플로우로 호출이 존재할 때 Client - spring-cloud-gateway -> backendbackend로부터 온 응답을 확인하고 싶은 경우에 어떻게 response 내용을 조회할 수 있는지 알아보자.기본으로 제공되는 필터들 중에 response를 조회하거나 조작하는 필터는 두 가지를 발견할 수 있었다. ModifyRequestBody GatewayFilter FactoryThe Netty Write Response Filter각각의 필터에서 응답을 읽는 부분을 참고해 보면ModifyRequestBody GatewayFilter Factory에서는 ServerHttpResponseDecorator를 이용해 exchange의 응답값을 읽어 들인다. 간..
-
[SpringCloudGateway] ExceptionHandler
MVC에서는 @ControllerAdvice를 통해서 에러를 핸들링한다.Reactive에서는 다른 방식의 에러 핸들링 방법을 제공하는데 이를 Spring Cloud Gateway에 어떻게 적용하는지 알아보자. ErrorWebExceptionHandlerSpring cloud gateway에서 발생한 모든 예외를 처리할 수 있는 전역 핸들러 인터페이스WebFlux의 최하단 필터 체인에서 동작하며, DispatcherHandler가 처리하지 못한 에러를 이 핸들러가 최종적으로 받는다.에러 내역 로그를 남기거가, 에러 응답을 포맷팅 해서 주는 작업 등을 할 수 있다. ErrorWebExceptionHandler에서는 handle을 구현해야 하는데 handle 메서드에서는 exchange에 response를 직..
-
[SQL레벨업] 3장 SQL의 조건 분기
union을 사용한 쓸데없이 긴 표현sql에서 조건 분기를 할 때 union을 사용해도 좋을지 여부는 신중히 검토해야 한다.union과 case를 사용한 조건 분기를 비교하면서, 어떤 경우에 어떤 것을 사용하는 것이 좋을지 알아보자. 책의 내용에는 예제를 위주로 설명해서 예제를 보면 내용을 이해하기 쉽다.정리하는 것도 예제를 중심으로 정리해서 이럴 땐 이렇게 쓸 수 있다를 나중에 떠올릴 수 있도록 해보자. 2001년까지는 세금이 포함되지 않은 가격을, 2002년부터는 세금이 포함된 가격을 price 필드에 표시하라 기본 테이블 구하고자 하는 결과 union 사용 - 성능상 테이블을 두 번 조회 select iname, year, price_tax_ex AS pricefrom Itemswhere yea..
-
[SpringCloudGateway] HttpHeaders Filter
HttpHeadersFilters Spring Cloud Gateway에서 Backend로 요청을 보내기 전에 HTTP 헤더를 조작하거나 필터링하는 역할NettyRoutingFilter와 같은 Routing 단계 이전에 실행된다Forwarded Headers FilterGateway에서 Forwarded 헤더를 생성하여 Backend로 전달Forwarded 헤더에 포함된 정보for: 요청을 보낸 클라이언트의 IP 주소Host: 원본 요청의 Host 값Scheme: HTTP/HTTPS와 같은 프로토콜Port: 요청이 수신된 포트Forwarded: for=192.168.1.10;host=myapp.com;proto=https RemoveHopByHop Headers Filter**RFC 2616 (IETF ..
-
[SQL레벨업] 2장 SQL 기초
데이터베이스를 이용하는 때 핵심이 되는 처리는 검색이다.select from where이라는 기초적인 개념은 알고 있으니 책을 읽으며 정리하고 싶은 내용을 써내려가 보자. where 구의 다양한 조건중에 이 조건은 != 과 같은 의미이다select * from Addresswhere address '서울시'-> 서울시가 주소가 아닌 데이터 검색(부산시,인천시,,) where 구의 다양한 조건을 이어붙일때 and or을 사용한다. 같은 검색 조건으로 or 이 여러개 있을때는 in을 사용해보자. select * from Addresswhere address in ('서울시', '인천시', '부산시') null 체크를 하는 경우에는 = NULL로 사용하지않고is null, is not null 로 사용한다..