17. Pinpoint
대규모 분산 시스템의 성능정보 수집과 문제 분석을 위한 APM 도구
- APM (Application Performance Management)
분산 트랜잭션 추적
애플리케이션 토폴로지 자동 발견 & 가시화
수평확장성
코드수준의 가시성
코드를 수정하지 않고 성능정보 수집
http://github.com/naver/pinpoint
73. Pinpoint가 없었던 시절
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
…
Caused by: ◂◊╩◌♪♦♂◘◦▸╫╛╟╤❶╦╧[afg00101101aj..
…
Caused by: …
74. Pinpoint가 없었던 시절
Caused by: java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
…
Caused by: ◂◊╩◌♪♦♂◘◦▸╫╛╟╤❶╦╧[aDgfRhaj..
…
Caused by: …
109. TCP connect가 지연된 상황
Socket Option : ConnectTimeout , Socket Backlog
WebServer : Apache, Nginx
Network Switch : LoadBalancer(L4)
Client 특성 : HttpClient의 내부 retry 로직
RPC Timeline Pattern 1
TCP 연결에 문제가 있는 패턴
Client execute
Server
110. RPC Timeline Pattern 2
Network이 느린 경우
Client execute
Server
해외서버에 서버가 존재하는경우
Network 트래픽, 서버의 위치 점검
HTTP KeepAlive, HTTP2 활용
Gzip과 같은 압축활용
111. RPC Timeline Pattern 3
Client execute
Server
TargetServer의 처리가 느림
Client의 전면 장애로 파급될 가능성이 있음
Socket Timeout
Circuit breaker : Netflix Hystrix
TargetServer가 느림
112. RPC Timeline Pattern 4
Client execute
Server
Response 를 받은 후 Stream에서 데이터를 추가로 읽는 경우
- 대용량 파일 다운로드
보통 정상상태
이 상황이 문제를 유발한다면, 별도 서버 구축이 필요
응답데이터가 많음