분류 전체보기

TCP의 혼잡 제어는 흐름 제어나 오류 제어와는 다르게 라우터를 포함한 넓은 범위의 전송 문제를 다루게 된다 💬 AIMD(Additive Increase / Multiplicative Decrease) 처음엔 패킷을 하나씩 보내고 문제가 발생하지 않는다면 윈도우 크기를 1씩 증가시킨다 패킷 전송에 실패하거나 일정 시간을 넘으면 패킷 전송 속도를 절반으로 줄인다. 네트워크에 늦게 들어온 호스트가 처음에는 불리하지만, 시간이 흐르면서 평형상태로 수렴한다 문제점은 초기에 네트워크의 높은 대역폭을 사용하지 못해서 오랜 시간이 걸리게 되고, 네트워크가 혼잡해지는 상황을 미리 감지하지 못한다. 즉, 네트워크가 혼잡해지고 나서야 대역폭을 줄이는 방식인 것이다. 💬 Slow Start AIMD가 네트워크 수용량 주변에..
전송계층에 해당하는 프로토콜인 TCP는 흐름제어, 오류제어, 혼잡제어를 제공하는데 흐름제어를 하는 방법을 알아보자 💬 Stop - And - Wait 컴퓨터 네트워크 설정에서 재전송을 기반으로 하는 신뢰적인 데이터 전송 프로토콜 중 하나가 ARQ프로토콜이다. 이 StopAndWait가 ARQ의 방식 중 하나이다. 이 방식에서 송신측 A가 B에게 1개의 프레임을 송신하게 되면 B는 해당 프레임의 에러 유무를 판단하여 A에게 ACK 혹은 NAK을 보내게 된다. 장점 과 단점 장점 구현 방식이 매우 단순하며 송신 측 내에 최대 프레임 크기를 버퍼 1개만 잡아도 이론적으로는 문제가 없다 오류 검출과 복구가 쉽다 단점 효율이 낮다 송신자가 매번 한개의 프레임만 전송하면 전송 성능이 느리고 채널의 활용도가 매우 낮..
💬 TCP 인터넷 상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다. 특징 신뢰적이고 연결 지향성 서비스를 제공하며 패킷의 추적 및 관리를 하는 역할이다. 연결형 서비스로 신뢰적인 전송을 보장하기 위해 handshake를 진행한다. 연결 시 : 3-way Handshake를 진행 연결 해제 시 : 4-way Handshake를 진행 흐름제어와 혼잡제어를 수행하게 되지만 이 때문에 속도 측면에서는 아쉬운 면이 있다 전 이중 방식, 점대점 방식이 있다. TCP-HEADER(With 플래그 정보) 패킷에는 어떤 패킷이 새로운 시도이고 기존 통신에 대한 응답인지 구분해야 했습니다. TCP Header에는 Code bit(Flag bit)라는 부분이 존재한다. 이 부분은 6bit로 구..
▶ EC2 와 로컬의 응답 시간의 차이 내가 테스트를 공부하게 되면서 문득 로컬과 EC2의 시간 차이를 비교해보고 싶었다. EC2가 훨씬 느린것이야 당연히 알고 있었지만 그 이유를 모른다는 생각에 시작했다. 테스트는 역시 로컬이 말도 안되는 시간값을 보여줬다 https://latewalk.tistory.com/151 JMeter를 이용한 과부하 테스트(동시 접속자 테스트) JMeter를 알아보기 전에 부하 테스트에 대해서 간단하게 알아보자 부하 테스트는 임계치 한계에 도달 할 때까지 시스템의 부하를 지속적으로 증가시켜서 시스템을 테스트하는 것을 의미하는 테 latewalk.tistory.com ▶ 응답 속도가 느리다 응답 속도가 느리다고 생각한 이유는 TPS에서 알수 있었다. 데이터를 처리하는 단위인 T..
List 와 Page 그리고 Slice 현재 나의 홈화면은 모든 상품을 나타내는 화면이다. 즉, 홈화면을 나타내는 것만으로도 모든 데이터를 접근하는 쿼리문이 실행이 된다는 것인데 그렇다면 그 상품을 가져오는 방법은 무엇이 있을까? JPA를 이용한 페이징 방법에는 List, Page, Slice 이렇게 사용할 수 있다. Page와 Slice 이전에 작성한 Page와 Slice를 비교하는 블로그이다. https://latewalk.tistory.com/152 페이징(Pagination) 프로젝트를 제작하다 보면 정말 많은 양의 데이터를 다루게 되는 경우가 있다. 또한 그 방대한 양의 데이터를 사용자에게 전달할 일이 필요 할 때가 있다. 그때 사용자가 요청한 모든 값을 가져 latewalk.tistory.co..
기본적인 API 동작 1. 클라이언트는 데이터를 다양한 방법을 통해 담아 API로 호출한다 2. API에 해당하는 컨트롤러는 해당 요청을 처리한다 3. 데이터가 정상적으로 처리된다 4. 컨트롤러 안에 있는 비즈니스 로직 처리를 수행한다 5. 비즈니스 로직이 완료되면 다시 Controller로 돌아가 클라이언트에게 성공 Status와 응답 데이터를 전송한다. Global Exception Global Exception을 야기하는 비정상 동작 처리가 되는 과정 클라이언트가 데이터를 담아 API로 호출을 한다, 컨트롤러는 이에 대한 처리를 진행한다 데이터의 처리가 안전하게 수행되지 않고 예외가 발생한다. 비즈니스의 로직을 처리하지 않고 @RestControllerAdvice / @ExceptionHandler..
프로젝트를 제작하다 보면 정말 많은 양의 데이터를 다루게 되는 경우가 있다. 또한 그 방대한 양의 데이터를 사용자에게 전달할 일이 필요 할 때가 있다. 그때 사용자가 요청한 모든 값을 가져오는 것은 매우 비효율적인 방법이다. 해당 데이터를 가져오는 과정에 서버에 과부하가 올 가능성이 커지기 때문이다. 그래서 과부하를 줄이기 위해 나온 방법이 바로 Pagination(페이지네이션)이라고 한다. 페이지네이션은 데이터를 원하는 단위로 정렬하게 되고 페이지 크기에 따라 나눠 전달한다. Pagenation(페이지네이션) 데이터를 몇 번째 페이지인지, 해당 페이지에 몇 개의 데이터를 가져올 것인지, 정렬 기준을 토대로 정보를 전달하는 것이다. Pageable 이것은 Spring에서 제공하는 Pagination을 위..
· 테스트
JMeter를 알아보기 전에 부하 테스트에 대해서 간단하게 알아보자 부하 테스트는 임계치 한계에 도달 할 때까지 시스템의 부하를 지속적으로 증가시켜서 시스템을 테스트하는 것을 의미하는 테스트로 성능(Perfomance) 테스트의 하위 테스트이다 부하 테스트의 목적을 한번 더 상기시켜보자면 버퍼 오버플로우, 메모리 누수, 및 잘못된 메모리 관리와 관련된 응용 프로그램의 결함을 노출한다 부하 테스팅의 결과로 발견되는 문제는 로드 밸런싱 문제, 대역폭 문제, 기존 시스템의 용량 등이 포함된다 데이터 베이스, 하드웨어, 네트워크 등의 응용 프로그램의 모든 구성 요소의 상한을 결정한다 예상할 수 있는 어플에 대한 부하를 관리 할 수 있도록 한다. 더욱 자세한 내용은 https://latewalk.tistory.c..
· 테스트
우리가 프로젝트를 제작하게 되면 가장 먼저 하게 되는 것이 바로 테스트이다. 하지만 우리가 하는 성능 테스트는 어떻게 진행하게 되는 것일까? 성능 테스트란 성능 테스트는 시스템 구성 요소가 특정 상황에서 어떤 성능을 보이는지 확인하기 위해 수행되는 테스트이다. 제품의 리소스 사용, 확장성 및 안정성도 해당 테스트들을 사용해서 검증할 수 있다 성능테스트는 기본적으로 매우 광범위하다. 다음 그림은 성능 테스트가 부하 및 스트레스 테스트 모두에 대한 상위 집합임을 보여준다. 때문에 대부분의 테스트를 진행할 때 부하 혹은 스트레스 테스트를 진행한다 부하 테스트 부하 테스트는 성능(Perfomance)의 하위 집합으로, 임계치 한계에 도달 할 때까지 시스템의 부하를 지속적으로 증가시켜 시스템을 테스트하는 것이다...
· 테스트
1. 처리량(Transaction Per Second) 클라이언트의 요청부터 결과까지 걸리는 총 시간을 말하고 이것을 TPS로 나타낸다. 2. 응답 시간(Response Time) 총 TPS의 시간은 응답 시간의 관점으로 봤을때 두 가지로 나뉘게 된다. 응답 시간은 아래의 두 가지로 분류가 가능하다 처리 시간(Processing Time) : 실제 서버가 요청을 처리하는데 걸린 시간 대기 시간(Latency Time) : 클라이언트와 서버간에 데이터를 주고 받는데 걸린 시간 TPS를 높이는 법 그렇다면 우리의 목표는 TPS를 높이는 것인데 어떻게 높일 수 있을까? 서버를 늘린다. 단순히 서버가 많아지면 많아질수록 TPS는 비례하여 증가할 것이다. 쓰레드 풀과 DB 커넥션 풀을 늘리는 것이다. 쓰레드 풀 ..
늦은산책
'분류 전체보기' 카테고리의 글 목록 (13 Page)