경주장
3장 OS 캐시와 분산 본문
강의 8 OS캐시 구조
OS 캐시를 이용해 디스크 액세스를 줄이자.
. 가상 메모리
- 프로세스에서 메모리를 다루기 쉽게 하는 이점을 제공한다.
- OS가 커널 내에서 메모리를 추상화하고 있다.
- 페이지: OS가 물리 메모리를 확보/관리하는 단위
. 페이지 캐시
- 커널이 한 번 할당한 메모리를 해제하지 않고 남겨두는 것
. 페이지
- 가상 메모리의 최소단위
. 메모리가 비어 있으면 캐싱
- sar 명령어로 캐싱 용량을 확인 할 수 있다.
강의 9 I/O부하를 줄이는 방법
. 데이터 규모를 물리 메모리보다 적게 유지하도록 노력하자 => 전부 캐싱 가능
하지만.. 단순히 대수만 늘려서는 확장성을 확보 할 수 없다.
=> 강의 10 - 국소성을 살리는 분산
단순히 대수만 늘린 분산
국소성(locality)을 고려한 분산 = 데이터에 대한 액세스 패턴을 고려해서 분산시키는 것
파티셔닝 - 국소성을 고려한 분산 1
파티셔닝 = 한 대 였던 DB 서버를 여러대의 서버로 분할하는 방법을 말한다.
분할 방법은 여러 가지가 있지만, 간단한 것은 '테이블 단위 분할'이다.
같이 액세스 되는 경우가 많은 테이블을 같은 서버에 위치시킨다.
다른 분할 방법으로는 '테이블 데이터 분할'이 있다.
예를들어 사용자의 ID의 첫글자가 a~c인 사용자와 관련된 데이터는 한 서버에 묶는 식이다
요청 패턴을 '섬'으로 분할 -국소성을 고려한 분산 2
예를 들어, HTTP 요청의 User-Agent나 URL을 보고 통상의 사용자이면 섬1, 일부 API 요청이면 섬 2, Google Bot이나 (크롤링)이면 섬 3과 같은 식으로 나누는 방법이다.
페이지 캐시를 고려한 운용의 기본 규칙
1. OS 가동 직후에 서버를 투입하지 않을 것
- 캐시가 쌓여있지 않기 때문에 오직 디스크 액세스만 발생하게 된다. 대규모 서버의 경우 서버다운이 발생 할 위험이 있다.
- DB파일을 한 번 cat해줘서 캐시에 올린 후 사용하면 안전하다.
2. 성능평가, 부하시험은 캐시가 최적화된 후에 실시하자.
'기술서적 > 대규모서비스를지탱하는기술' 카테고리의 다른 글
4장 분산을 고려한 MySQL운 (0) | 2021.09.12 |
---|---|
강의 6 규모조정의 요소 (0) | 2021.09.08 |
강의 5 - 대규모 데이터 처리의 어려운점 (0) | 2021.09.08 |