- 방문자수
전체 방문자
오늘 방문자
어제 방문자
인기 길
-
[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] 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..
-
[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 기능..
-
[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/..
최신 글
-
[MySQL] 인덱스와 스캔 튜닝
realMySQL 책을 읽으면서 디테일하게 내용을 공부하는 점은 좋지만처음 공부하는 내용이 너무 자세하게 깊이 공부하니 전체적인 큰 그림이 머리에 잘 안 들어온다는 생각이 들었다. 대략적인 틀 정도만 잡아놓고 디테일한 정보를 읽으면 이해하는데 도움이 될것이라 생각하여블로그나 유투브에 간략한 내용을 검색하다가 괜찮은 영상이 있어서 그 내용을 나중에도 빠르게 생각날 수 있도록 정리해 보도록 하겠다. https://youtu.be/_UI8YDU_mfg?si=aT4__dwGqVo-zuXy 개요웹 애플리케이션은 대부분 DB의 내용을 조회하는 액션이 등록/수정/삭제 액션보다 더 많다그만큼 조회 속도가 중요하다.조회 속도를 높이기 위해서는 랜덤 I/O, 순차 I/O를 줄여야 한다.이를 줄일 수 있는 방법으로는 캐시..
-
[MySQL] 9장 옵티마이저와 힌트
MySQL에서는 explain이라는 명령으로 쿼리의 실행 계획을 확인할 수 있다. MySQL 서버가 사용자의 요청을 처리하기 위해 데이터를 가공하는 기본 절차와 빠른 성능을 보장하기 위해 수행하는 최적화 절차를 살펴보자.(현재는 기본 절차만 스터디하고 정리하였다)개요쿼리 실행 절차sql 문장을 서버가 이해할 수 있는 수준으로 분리(parse tree)parse tree를 확인하며 테이블, 인덱스 정보를 선택2단계에서 결정된 정보를 활용해 스토리지 엔진으로부터 데이터를 가져옴옵티마이저의 종류비용 기반 최적화 -> 대부분의 RDBMS가 사용규칙 기반 최적화 기본 데이터 처리MySQL 서버를 포함한 모든 RDBMS는 데이터를 정렬하거나 그루핑 하는 등의 기본 데이터 가공 기능을 가지고 있다. 기본적인 가공을..
-
[MySQL] 8장 인덱스
디스크 읽기 방식 -> 랜덤 I/O, 순차 I/O컴퓨터에서 CPU나 메모리 같은 주요 장치는 대부분 전자식 장치지만 하드 디스크 드라이브는 기계식 장치다. 하드 디스크를 대체하기 위해서 SSD(solid state driver)가 출시되었다. SSD는 기존 하드 디스크에서 데이터 저장용 플래터(원판)를 제거하고 그 대신 플래시 메모리를 장착했다. 하드 디스크의 경우 물리적인 원판을 돌려야 하기 때문에 랜덤 I/O에는 느리지만, 순차 I/O의 경우에는 상대적으로 빠르다. 인덱스란?인덱스의 비유색인 -> 정렬된 키 기준으로 빠르게 데이터를 찾아갈 수 있다. 자료구조 -> sortedList(인덱스, 저장되는 값을 항상 정렬된 상태로 유지), arrayList(데이터 파일, 저장되는 순서 그대로 유지) ..
-
[Tomcat] connection thread metric 모니터링
spring application에서는 다양한 상황에 thread를 사용한다.이전 포스팅 중에 tomcat connector 관련 설정 내역들을 정리한 내역이 있다. 여기에 설정한 내역들이 적절한 값인지 확인하기 위해서 모니터링을 진행할 수 있도록 설정해 보자. 설정 추가 tomcat의 connector thread 정보를 /actuator 조회를 위해서는 추가적인 설정이 필요 server: tomcat: mbeanregistry: enabled: trueTomcat 자체는 JMX(MBean)를 통해 여러 메트릭 정보를 제공할 수 있다(예: active thread 수, request 처리 수, 에러 수 등)하지만 Spring Boot는 기본적으로 Tomcat의 MBean 등록을 성능과..
-
Resilience4j Circuitbreaker 관련 metric 모니터링
Spring Cloud Gateway에서는 기본으로 다양한 필터를 제공하는데 그중에서 CircuitBreaker 필터가 존재한다. 해당 필터를 사용하기 위해서는 spring-cloud-starter-circuitbreaker-reactor-resilience4j 디펜던시를 추가해주어야 한다.implementation 'org.springframework.cloud:spring-cloud-starter-circuitbreaker-reactor-resilience4j' 이제 resilience4j의 CircuitBreaker를 사용할 준비가 되었다.해당 디펜던시를 추가한 이후에 /actuator/prometheus의 메트릭을 보면 관련 내역들이 추가된 것을 확인할 수 있다.각각의 metric이 어떠한 내용을..