• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Cassandra 멘붕기 | Devon 2012
 

Cassandra 멘붕기 | Devon 2012

on

  • 3,952 views

 

Statistics

Views

Total Views
3,952
Views on SlideShare
3,118
Embed Views
834

Actions

Likes
7
Downloads
74
Comments
0

3 Embeds 834

http://devon.daum.net 686
http://www.scoop.it 146
http://blog.naver.com 2

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Cassandra 멘붕기 | Devon 2012 Cassandra 멘붕기 | Devon 2012 Presentation Transcript

    • 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 trial20 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/Oiowait 상태 유발된 후 swap발생 Hot spot이 전체 클러스터로 확산 메모리 우선이라는 특징이 무력화
    • 2차 멘붕iostat -dkx 1더 빠른 I/O성능을 갖는 디스크 필요메모리 증설
    • 3rd trial...이라고 쓰고 서버교체라고 읽는다.SATA to SASRAID-10 구성 RAID controller상의 cache는 그다지...swapoff네할렘 트리플 풀채널 : 4GB x 3EA
    • 3차 멘붕며칠 잠잠하더니 뻥뻥터지는 Read Time-out이번에도 Disk I/O 관련한 iowait 부하tcp소켓도 다소 문제.
    • 3차 멘붕
    • 3차 멘붕스키마에 오타라니 OTLkeys_cached가 8,000,000이 실수를 안하는 꼼수-_-개발 800000 은 자릿점이 없다 800111 50111000
    • 3차 멘붕문제가 카산드라에만 있는 것은 아니다.
    • Tuning again...이번엔 쫌 지대로 하자.마침 v1.0이 발표되며 많은 것들이 저절로 해결 올레~~~~
    • Tuning again...블럭디바이스 스케줄러 noop, anticipatory, DEADLINE, cfqext4 mount options rw,noatime,data=writeback,barrier= 0,nobh,errors=remount-roIntegrity 위협 = 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~64MBRow cache 없이 Key cache만 사용
    • 4차 멘붕노드중 한 대만 이상한 짓을 한다. Hot spot? RAID controller 불량으로 판정 교체후 쌩쌩해짐 장비 불량은 빨리 발견해서 AS받자.
    • 지금은 잘 돕니다ㅎㅎ
    • 요약SYSTEM Cassandra RAM, SAS, RAID JNA, MMAPOS schema design scheduler cache size sysctl, swapoff disable keep-alive ext4, mount opt Endpoint snitchJVM column index size OOPS disable preheat GC
    • 요약카산드라던 뭐던간에,목적에 잘 맞는 스토리지를 골라서,잘 튜닝하면 충분히 성능 좋다.
    • Referencehttp://cassandra.apache.org/http://www.datastax.com/docs/1.0/operations/tuninghttp://www.wikipedia.org/http://github.com/hector-client/hector
    • 더 궁금하신가요?빨리 메모하세요~basher97@gmail.com010-72xx-xx02http://www.facebook.com/luminancer