Optimization 4

책 <디자이너를 위한 웹성능 최적화 기법>

페이지를 로딩하는 데 3초가 지나면 최대 40%의 사용자가 사이트를 떠난다. 사이트 멈춤, 에러, 페이지 로딩 지연, 복잡한 결제 과정을 거친 사용자의 75%는 해당 사이트에서 상품을 구매하지 않는다. 사용자의 88%는 불쾌한 경험을 한 사이트를 재방문하려고 하지 않는다. 100밀리초 미만의 지연은 사용자에게 순간처럼 인식되지만 100~300밀리초 사이의 지연은 그렇지 않다. 300~1,000 밀리초 사이의 지연이 생기면 사용자는 사이트가 느려도 움직이고는 있다고 느끼지만 만약 1,000 밀리초 이상 지연된다면 사용자는 더 이상 집중하지 못하고 아마 다른 생각을 하기 시작할 것이다. 페이지 로딩 시간에는 사이트의 프론트엔드에서 클라이언트의 요청에 응답하는 과정뿐 아니라 데이터베이스 호출이나 템플릿을 컴파..

Optimization 2022.10.23

분산 시스템 설계시 고려할 것 - CAP 정리

CAP 정리 (Consistency, Availavility, Partition Tolerance theorem) 분산 시스템을 설계할 때는 CAP 정리를 이해하고 있어야 한다. Consistency 데이터 일관성 분산 시스템의 어느 노드에 접속하더라도 같은 데이터를 응답받아야 한다. Availability 가용성 분산 시스템의 어느 노드에 장애가 발생하더라도 항상 응답받아야 한다. Partition Tolerance 파티션 감내 분산 시스템의 두 노드 사이에 통신 장애가 발생하더라도 시스템은 계속 동작하여야 한다. 세 가지 요구사항을 동시에 만족하는 분산 시스템을 설계하는 것은 불가능하다. 요구사항 가운데 어느 두 가지를 만족시킬 것인지 결정해야 한다. (+ 일관성과 가용성을 동시에 만족하는 시스템은 ..

Optimization 2022.03.13

Heap Dump 분석하기

OutOfMemorryError JVM의 Heap 공간이 부족하여 더이상 오브젝트를 Heap 공간에 할당할 수 없다는 의미이다. 메모리가 부족하여 가비지컬렉터가 Heap 공간을 복구하지 못한다. 프로그램에 비해 메모리가 부족하거나 메모리 릭이 발생했을 수 있다. Heap Dump 분석 프로세스 ID 확인하기 - jps ps -ef | grep java jps -v Heap 사용 정보 확인하기 - jmap jmap -heap jmap -histo:live histo: 인스턴스 개수, 메모리 사용량들을 확인할 수 있다. Heap Dump 파일 생성하기 - jmap jmap -dump:[live],format=b,file= live: 현재 active한 객체만 프린트 format=b: 덤프 파일을 binary..

Optimization 2021.07.26

책 <대용량 아키텍처와 성능 튜닝>

성능 엔지니어링 언제 해야 하는가? 분석 단계 성능에 대한 목표 세우기 목표 응답 시간 총 사용자 수 동시 접속자 수 성능 모델 (부하의 패턴) 서비스의 종류 (웹, 게임, 기업 시스템, 쇼핑, 뱅킹 등), 사용자층, 지역 고려 디자인 단계 목표 성능과 용량을 달성할 수 있는 규모의 시스템 설계를 진행한다. 피크 타임에 맞춰서 디자인한다. 부하가 일정하고 예측 가능할 땐 고정된 사이즈의 하드웨어, 부하가 갑자기 몰리는 시스템은 클라우드를 이용해 auto scale out 모델을 사용한다. 100,000명 정도가 사용하는 시스템은 RDBMS를 사용해도 문제 없다. 100,000,000명 정도가 사용하는 시스템은 샤딩이나 NoSQL 등을 사용해야 한다. 또한 빠른 응답시간을 요구하는 경우 Redis, Mem..

Optimization 2021.02.15