SlideShare a Scribd company logo
1 of 53
Download to read offline
Cassandra 멘붕기
삽질로 일궈낸 카산드라 튜닝 노하우 공유


    Daum 비즈개발2팀 안세준
검색 광고? 광고 검색?
검색 광고? 광고 검색?


CPT, CPM, CPC, ... ?

  무엇에 대해 광고비를 지불하는가

    기간, 회수, 클릭
검색 광고? 광고 검색?
쿼리는 얼마나?

다음 통합검색: 5~6천만/일

외부 매체 포함 총 유입 쿼리: 120~140 M

 카산드라 Read (쿼리의 15배): 20억/일

 카산드라 총 쿼리: 약 25억/일
쿼리는 얼마나?



Oracle로 저 쿼리를 받아낼 수 없다.

물론 JOIN-SQL 쓰면 쿼리수는 줄어든다.
Oracle은 안되니...

Clix(Sales) DB -> 검색용DB

  동기화? 인덱싱?

  검색용 DB는 빠르고, 안정적이어야 한다.

  정보구조가 다르다.

  Read가 Write보다 3~4배 많다.
메시지
 큐




검색용DB
             인덱서
리즈 시절

구현이 쉽다.

쓸만한 속도가 나온다. MEMORY Engine 쓰면...

요즘에 비해 유입 쿼리가 절반 수준이었다.

게시판 구현과 유사한 방식

그렇게... Mysql을 선택해 버렸다......
안되겠다.


광고주와 광고량 점점 증가

 메모리자원은 비싸고...

휘발성 DB ➔ 장애 나면 멘붕
RDBMS를 꼭 써야하나?

“검색어” ➔ 광고 목록 (즉, 검색결과)

  검색엔진은 RDB안쓰잖아?

Relation?

  있으면 쓰겠지...

  없어도 그만...
NoSQL?

NoSQL이라는 단어만 들어본 상태..

  SQL이 아니라고?

    그런뜻이 아닌걸 알고.. 멘붕

Hadoop, Cassandra, MongoDB, ...

  뭐가 이렇게 많아? 멘붕
Why Cassandra?
카산드라 내부의 데이터 저장방식

 검색 인덱스의 데이터 구조와 매우 유사

그 외 NoSQL의 일반적(매력적) 특성

 High Availabilities

 Scalabilities

 등등등...
Cluster  Keyspace  CF  Row  Column
Why Cassandra?
간략한 특징

 토큰 링 위에 key를 배치한다.

 모든 노드의 행동이 동일하다.

 Update가 없다. 무조건 Write.

 메모리 우선 Read/Write

 C를 다소 희생시켜 A, P 보장
1st trial
20 Nodes 짜리 Cluster

  각 Node는,

    CPU: 4-cores

    RAM: 8GB

    DISK: SATA-3 x 2 volumes

    ...면 충분할거라 생각했다.
1차 멘붕


구현은 가능했다.

Grinder로 부하테스트도 해봤다.

 근데 이게 함정ㅇㅇ
1차 멘붕

Hot spot 다수 발생

 schema 설계를 “더 잘 해야”했다.

   CF, ROW, COLUMN 크기와 수를 예측

 Replication strategy도..
1차 멘붕
1차 멘붕
2nd trial


스키마를 고쳤음

ROW KEY 선택이 중요
2차 멘붕

왜 이래도 안되나?ㅠㅠㅠㅠㅠㅠ

Compactions ➔ HEAVY I/O

iowait 상태 유발된 후 swap발생

  Hot spot이 전체 클러스터로 확산

  메모리 우선이라는 특징이 무력화
2차 멘붕


iostat -dkx 1

더 빠른 I/O성능을 갖는 디스크 필요

메모리 증설
3rd trial
...이라고 쓰고 서버교체라고 읽는다.

SATA to SAS

RAID-10 구성

  RAID controller상의 cache는 그다지...

swapoff

네할렘 트리플 풀채널 : 4GB x 3EA
3차 멘붕


며칠 잠잠하더니 뻥뻥터지는 Read Time-out

이번에도 Disk I/O 관련한 iowait 부하

tcp소켓도 다소 문제.
3차 멘붕
3차 멘붕
스키마에 오타라니 OTL

keys_cached가 8,000,000

이 실수를 안하는 꼼수-_-개발

  800000 은 자릿점이 없다

  800111

  50111000
3차 멘붕



문제가 카산드라에만 있는 것은 아니다.
Tuning again...


이번엔 쫌 지대로 하자.

마침 v1.0이 발표되며 많은 것들이 저절로 해결

 올레~~~~
Tuning again...
블럭디바이스 스케줄러

  noop, anticipatory, DEADLINE, cfq

ext4 mount options

  rw,noatime,data=writeback,barrier=
  0,nobh,errors=remount-ro

Integrity 위협 = Consistency 희생?
Tuning again...
/etc/sysctl.conf

  vm.swappiness = 0

  net.ipv4.tcp_tw_reuse = 1

  net.ipv4.tcp_tw_recycle = 1

  net.core.somaxconn = 3072

  net.ipv4.tcp_fin_timeout = 10
Tuning again...
Running on JVM

  깨알같은...

  -XX:+UseCompressedOops

  -XX:+UseParNewGC (기본)

  -XX:+UseConcMarkSweepGC (기본)

  -XX:+CMSParallelRemarkEnabled (기본)
Tuning again...
Running on JVM

  (계속)

  -XX:SurvivorRatio=11

  -XX:MaxTenuringThreshold=1 (기본)

  -XX:CMSInitiatingOccupancyFraction=90

  -XX:+UseCMSInitiatingOccupancyOnly (기본)
Tuning again...

JNA 사용이 선택적이다.

 당연히 쓰자.

root권한으로 실행시키자

 mmap
Tuning again...

CompactionStrategy :
LeveledCompactionStrategy

  vs. SizeTieredCompactionStrategy

  sstable_size_in_mb: 16~64MB

Row cache 없이 Key cache만 사용
4차 멘붕

노드중 한 대만 이상한 짓을 한다.

 Hot spot?

 RAID controller 불량으로 판정

   교체후 쌩쌩해짐

   장비 불량은 빨리 발견해서 AS받자.
지금은 잘 돕니다ㅎㅎ
요약
SYSTEM
                             Cassandra
      RAM, SAS, RAID
                                JNA, MMAP
OS
                                schema design
      scheduler
                                cache size
      sysctl, swapoff
                                disable keep-alive
      ext4, mount opt
                                Endpoint snitch
JVM
                                column index size
      OOPS
                                disable preheat
      GC
요약


카산드라던 뭐던간에,

목적에 잘 맞는 스토리지를 골라서,

잘 튜닝하면 충분히 성능 좋다.
Reference

http://cassandra.apache.org/

http://www.datastax.com/docs/1.0/
operations/tuning

http://www.wikipedia.org/

http://github.com/hector-client/hector

More Related Content

What's hot

Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41
cosmosyc
 
Mongodb 특징 분석
Mongodb 특징 분석Mongodb 특징 분석
Mongodb 특징 분석
Daeyong Shin
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교
Woo Yeong Choi
 

What's hot (20)

Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41Mongo DB 활용가이드 Tip 35 ~ 41
Mongo DB 활용가이드 Tip 35 ~ 41
 
Redis trouble shooting
Redis trouble shootingRedis trouble shooting
Redis trouble shooting
 
Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조Ch9 프로세스의 메모리 구조
Ch9 프로세스의 메모리 구조
 
Zookeeper 소개
Zookeeper 소개Zookeeper 소개
Zookeeper 소개
 
Mongo db 복제(Replication)
Mongo db 복제(Replication)Mongo db 복제(Replication)
Mongo db 복제(Replication)
 
cassandra overview & spark to cassandra
cassandra overview & spark to cassandra cassandra overview & spark to cassandra
cassandra overview & spark to cassandra
 
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
HTTP 완벽 가이드 / 20장 리다이렉션과 부하균형
 
Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기Apache ZooKeeper 로
 분산 서버 만들기
Apache ZooKeeper 로
 분산 서버 만들기
 
(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell(OCI 탐험일지) cloud shell
(OCI 탐험일지) cloud shell
 
Mongodb 특징 분석
Mongodb 특징 분석Mongodb 특징 분석
Mongodb 특징 분석
 
DNS Express
DNS ExpressDNS Express
DNS Express
 
분산저장시스템 개발에 대한 12가지 이야기
분산저장시스템 개발에 대한 12가지 이야기분산저장시스템 개발에 대한 12가지 이야기
분산저장시스템 개발에 대한 12가지 이야기
 
[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기[252] 증분 처리 플랫폼 cana 개발기
[252] 증분 처리 플랫폼 cana 개발기
 
Mongodb cluster
Mongodb clusterMongodb cluster
Mongodb cluster
 
AWS EC2 AMI seminar(KELP 2011)
AWS EC2 AMI seminar(KELP 2011)AWS EC2 AMI seminar(KELP 2011)
AWS EC2 AMI seminar(KELP 2011)
 
Zoo keeper 소개
Zoo keeper 소개Zoo keeper 소개
Zoo keeper 소개
 
[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례[D2]thread dump 분석기법과 사례
[D2]thread dump 분석기법과 사례
 
주키퍼
주키퍼주키퍼
주키퍼
 
mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교mongodb와 mysql의 CRUD 연산의 성능 비교
mongodb와 mysql의 CRUD 연산의 성능 비교
 
Redis on AWS
Redis on AWSRedis on AWS
Redis on AWS
 

Viewers also liked

NoSQL 동향
NoSQL 동향NoSQL 동향
NoSQL 동향
NAVER D2
 
알고 쓰자! HBase | Devon 2012
알고 쓰자!  HBase | Devon 2012알고 쓰자!  HBase | Devon 2012
알고 쓰자! HBase | Devon 2012
Daum DNA
 

Viewers also liked (9)

Cloumon Product Introduction
Cloumon Product IntroductionCloumon Product Introduction
Cloumon Product Introduction
 
Galaxy on the GenomeCloud (Galaxy Community Conference 2014)
Galaxy on the GenomeCloud (Galaxy Community Conference 2014)Galaxy on the GenomeCloud (Galaxy Community Conference 2014)
Galaxy on the GenomeCloud (Galaxy Community Conference 2014)
 
자전거로 샌프란시스코를 즐길 여행자를 위한 안내서
자전거로 샌프란시스코를 즐길 여행자를 위한 안내서자전거로 샌프란시스코를 즐길 여행자를 위한 안내서
자전거로 샌프란시스코를 즐길 여행자를 위한 안내서
 
Cql – cassandra query language
Cql – cassandra query languageCql – cassandra query language
Cql – cassandra query language
 
NoSQL 동향
NoSQL 동향NoSQL 동향
NoSQL 동향
 
알고 쓰자! HBase | Devon 2012
알고 쓰자!  HBase | Devon 2012알고 쓰자!  HBase | Devon 2012
알고 쓰자! HBase | Devon 2012
 
Deploying and Managing Hadoop Clusters with AMBARI
Deploying and Managing Hadoop Clusters with AMBARIDeploying and Managing Hadoop Clusters with AMBARI
Deploying and Managing Hadoop Clusters with AMBARI
 
NoSQL 모델링
NoSQL 모델링NoSQL 모델링
NoSQL 모델링
 
NoSQL Guide & Sample
NoSQL Guide &  SampleNoSQL Guide &  Sample
NoSQL Guide & Sample
 

Similar to Cassandra 멘붕기 | Devon 2012

[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp
진현 조
 
오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0
sprdd
 
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
OpenStack Korea Community
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part I
sprdd
 

Similar to Cassandra 멘붕기 | Devon 2012 (20)

Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014
 
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법[2B2]기계 친화성을 중심으로 접근한 최적화 기법
[2B2]기계 친화성을 중심으로 접근한 최적화 기법
 
Kubernetes
Kubernetes Kubernetes
Kubernetes
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp[조진현]Kgc2012 c++amp
[조진현]Kgc2012 c++amp
 
오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0오픈소스컨설팅 클러스터제안 V1.0
오픈소스컨설팅 클러스터제안 V1.0
 
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
[OpenStack Days Korea 2016] Track3 - 방송제작용 UHD 스트로지 구성 및 테스트
 
resource on openstack
 resource on openstack resource on openstack
resource on openstack
 
[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들[2018] Java를 위한, Java에 의한 도구들
[2018] Java를 위한, Java에 의한 도구들
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_Architecture
 
Linux Performan tuning Part I
Linux Performan tuning Part ILinux Performan tuning Part I
Linux Performan tuning Part I
 
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
 
CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기CUDA를 게임 프로젝트에 적용하기
CUDA를 게임 프로젝트에 적용하기
 
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario ChoLinux Kernel Boot Process , SOSCON 2015, By Mario Cho
Linux Kernel Boot Process , SOSCON 2015, By Mario Cho
 
Kafka slideshare
Kafka   slideshareKafka   slideshare
Kafka slideshare
 
091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)091106kofpublic 091108170852-phpapp02 (번역본)
091106kofpublic 091108170852-phpapp02 (번역본)
 
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
3.[d2 오픈세미나]분산시스템 개발 및 교훈 n base arc
 

More from Daum DNA

Daum devday 13 [bap]
Daum devday 13  [bap]Daum devday 13  [bap]
Daum devday 13 [bap]
Daum DNA
 
Daum 키노트 | Devon 2012
Daum 키노트 | Devon 2012Daum 키노트 | Devon 2012
Daum 키노트 | Devon 2012
Daum DNA
 

More from Daum DNA (20)

Daum의 개방형 기술 전략 및 자바 기술 로드맵(2007)
Daum의 개방형 기술 전략 및 자바 기술 로드맵(2007)Daum의 개방형 기술 전략 및 자바 기술 로드맵(2007)
Daum의 개방형 기술 전략 및 자바 기술 로드맵(2007)
 
Daum OAuth 2.0
Daum OAuth 2.0Daum OAuth 2.0
Daum OAuth 2.0
 
Daum 음성인식 API (김한샘)
Daum 음성인식 API (김한샘)Daum 음성인식 API (김한샘)
Daum 음성인식 API (김한샘)
 
Daum 검색/지도 API (이정주)
Daum 검색/지도 API (이정주)Daum 검색/지도 API (이정주)
Daum 검색/지도 API (이정주)
 
오픈 API 활용방법(Daum 사례 중심, 윤석찬)
오픈 API 활용방법(Daum 사례 중심, 윤석찬)오픈 API 활용방법(Daum 사례 중심, 윤석찬)
오픈 API 활용방법(Daum 사례 중심, 윤석찬)
 
Daum 티스토리 API (천정환)
Daum 티스토리 API (천정환)Daum 티스토리 API (천정환)
Daum 티스토리 API (천정환)
 
Daum 로그인 API (함태윤)
Daum 로그인 API (함태윤)Daum 로그인 API (함태윤)
Daum 로그인 API (함태윤)
 
FT직군의 현재와 미래 - 홍윤표
FT직군의 현재와 미래 - 홍윤표FT직군의 현재와 미래 - 홍윤표
FT직군의 현재와 미래 - 홍윤표
 
웹접근성과 장애인 차별 금지법 - 장성민
웹접근성과 장애인 차별 금지법 - 장성민웹접근성과 장애인 차별 금지법 - 장성민
웹접근성과 장애인 차별 금지법 - 장성민
 
반응형 웹 디자인은 만능인가? - 신현석
반응형 웹 디자인은 만능인가? - 신현석반응형 웹 디자인은 만능인가? - 신현석
반응형 웹 디자인은 만능인가? - 신현석
 
Daum devday 13 [bap]
Daum devday 13  [bap]Daum devday 13  [bap]
Daum devday 13 [bap]
 
Daum DevDay 13-힐링이 필요해
Daum DevDay 13-힐링이 필요해Daum DevDay 13-힐링이 필요해
Daum DevDay 13-힐링이 필요해
 
Daum DevDay 13 - 마음의 소리
Daum DevDay 13 - 마음의 소리Daum DevDay 13 - 마음의 소리
Daum DevDay 13 - 마음의 소리
 
Daum DevDay 13 - OpenBrace
Daum DevDay 13 - OpenBraceDaum DevDay 13 - OpenBrace
Daum DevDay 13 - OpenBrace
 
Daum DevDay 13 - Ogangjang
Daum DevDay 13 - OgangjangDaum DevDay 13 - Ogangjang
Daum DevDay 13 - Ogangjang
 
Daum DevDay 13 - Mook
Daum DevDay 13 - MookDaum DevDay 13 - Mook
Daum DevDay 13 - Mook
 
Daum DevDay 13 - Moonlight
Daum DevDay 13 - MoonlightDaum DevDay 13 - Moonlight
Daum DevDay 13 - Moonlight
 
Daum DevDay 13 - In-N-Out
Daum DevDay 13 - In-N-OutDaum DevDay 13 - In-N-Out
Daum DevDay 13 - In-N-Out
 
Daum DevDay 13 - i-DF
Daum DevDay 13 - i-DFDaum DevDay 13 - i-DF
Daum DevDay 13 - i-DF
 
Daum 키노트 | Devon 2012
Daum 키노트 | Devon 2012Daum 키노트 | Devon 2012
Daum 키노트 | Devon 2012
 

Cassandra 멘붕기 | Devon 2012