Cassandra 멘붕기 | Devon 2012

5,198 views

Published on

0 Comments
17 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,198
On SlideShare
0
From Embeds
0
Number of Embeds
951
Actions
Shares
0
Downloads
110
Comments
0
Likes
17
Embeds 0
No embeds

No notes for slide

Cassandra 멘붕기 | Devon 2012

  1. 1. Cassandra 멘붕기삽질로 일궈낸 카산드라 튜닝 노하우 공유 Daum 비즈개발2팀 안세준
  2. 2. 검색 광고? 광고 검색?
  3. 3. 검색 광고? 광고 검색?CPT, CPM, CPC, ... ? 무엇에 대해 광고비를 지불하는가 기간, 회수, 클릭
  4. 4. 검색 광고? 광고 검색?
  5. 5. 쿼리는 얼마나?다음 통합검색: 5~6천만/일외부 매체 포함 총 유입 쿼리: 120~140 M 카산드라 Read (쿼리의 15배): 20억/일 카산드라 총 쿼리: 약 25억/일
  6. 6. 쿼리는 얼마나?Oracle로 저 쿼리를 받아낼 수 없다.물론 JOIN-SQL 쓰면 쿼리수는 줄어든다.
  7. 7. Oracle은 안되니...Clix(Sales) DB -> 검색용DB 동기화? 인덱싱? 검색용 DB는 빠르고, 안정적이어야 한다. 정보구조가 다르다. Read가 Write보다 3~4배 많다.
  8. 8. 메시지
  9. 9.  큐검색용DB 인덱서
  10. 10. 리즈 시절구현이 쉽다.쓸만한 속도가 나온다. MEMORY Engine 쓰면...요즘에 비해 유입 쿼리가 절반 수준이었다.게시판 구현과 유사한 방식그렇게... Mysql을 선택해 버렸다......
  11. 11. 안되겠다.광고주와 광고량 점점 증가 메모리자원은 비싸고...휘발성 DB ➔ 장애 나면 멘붕
  12. 12. RDBMS를 꼭 써야하나?“검색어” ➔ 광고 목록 (즉, 검색결과) 검색엔진은 RDB안쓰잖아?Relation? 있으면 쓰겠지... 없어도 그만...
  13. 13. NoSQL?NoSQL이라는 단어만 들어본 상태.. SQL이 아니라고? 그런뜻이 아닌걸 알고.. 멘붕Hadoop, Cassandra, MongoDB, ... 뭐가 이렇게 많아? 멘붕
  14. 14. Why Cassandra?카산드라 내부의 데이터 저장방식 검색 인덱스의 데이터 구조와 매우 유사그 외 NoSQL의 일반적(매력적) 특성 High Availabilities Scalabilities 등등등...
  15. 15. Cluster Keyspace CF Row Column
  16. 16. Why Cassandra?간략한 특징 토큰 링 위에 key를 배치한다. 모든 노드의 행동이 동일하다. Update가 없다. 무조건 Write. 메모리 우선 Read/Write C를 다소 희생시켜 A, P 보장
  17. 17. 1st trial20 Nodes 짜리 Cluster 각 Node는, CPU: 4-cores RAM: 8GB DISK: SATA-3 x 2 volumes ...면 충분할거라 생각했다.
  18. 18. 1차 멘붕구현은 가능했다.Grinder로 부하테스트도 해봤다. 근데 이게 함정ㅇㅇ
  19. 19. 1차 멘붕Hot spot 다수 발생 schema 설계를 “더 잘 해야”했다. CF, ROW, COLUMN 크기와 수를 예측 Replication strategy도..
  20. 20. 1차 멘붕
  21. 21. 1차 멘붕
  22. 22. 2nd trial스키마를 고쳤음ROW KEY 선택이 중요
  23. 23. 2차 멘붕왜 이래도 안되나?ㅠㅠㅠㅠㅠㅠCompactions ➔ HEAVY I/Oiowait 상태 유발된 후 swap발생 Hot spot이 전체 클러스터로 확산 메모리 우선이라는 특징이 무력화
  24. 24. 2차 멘붕iostat -dkx 1더 빠른 I/O성능을 갖는 디스크 필요메모리 증설
  25. 25. 3rd trial...이라고 쓰고 서버교체라고 읽는다.SATA to SASRAID-10 구성 RAID controller상의 cache는 그다지...swapoff네할렘 트리플 풀채널 : 4GB x 3EA
  26. 26. 3차 멘붕며칠 잠잠하더니 뻥뻥터지는 Read Time-out이번에도 Disk I/O 관련한 iowait 부하tcp소켓도 다소 문제.
  27. 27. 3차 멘붕
  28. 28. 3차 멘붕스키마에 오타라니 OTLkeys_cached가 8,000,000이 실수를 안하는 꼼수-_-개발 800000 은 자릿점이 없다 800111 50111000
  29. 29. 3차 멘붕문제가 카산드라에만 있는 것은 아니다.
  30. 30. Tuning again...이번엔 쫌 지대로 하자.마침 v1.0이 발표되며 많은 것들이 저절로 해결 올레~~~~
  31. 31. Tuning again...블럭디바이스 스케줄러 noop, anticipatory, DEADLINE, cfqext4 mount options rw,noatime,data=writeback,barrier= 0,nobh,errors=remount-roIntegrity 위협 = Consistency 희생?
  32. 32. 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
  33. 33. Tuning again...Running on JVM 깨알같은... -XX:+UseCompressedOops -XX:+UseParNewGC (기본) -XX:+UseConcMarkSweepGC (기본) -XX:+CMSParallelRemarkEnabled (기본)
  34. 34. Tuning again...Running on JVM (계속) -XX:SurvivorRatio=11 -XX:MaxTenuringThreshold=1 (기본) -XX:CMSInitiatingOccupancyFraction=90 -XX:+UseCMSInitiatingOccupancyOnly (기본)
  35. 35. Tuning again...JNA 사용이 선택적이다. 당연히 쓰자.root권한으로 실행시키자 mmap
  36. 36. Tuning again...CompactionStrategy :LeveledCompactionStrategy vs. SizeTieredCompactionStrategy sstable_size_in_mb: 16~64MBRow cache 없이 Key cache만 사용
  37. 37. 4차 멘붕노드중 한 대만 이상한 짓을 한다. Hot spot? RAID controller 불량으로 판정 교체후 쌩쌩해짐 장비 불량은 빨리 발견해서 AS받자.
  38. 38. 지금은 잘 돕니다ㅎㅎ
  39. 39. 요약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
  40. 40. 요약카산드라던 뭐던간에,목적에 잘 맞는 스토리지를 골라서,잘 튜닝하면 충분히 성능 좋다.
  41. 41. Referencehttp://cassandra.apache.org/http://www.datastax.com/docs/1.0/operations/tuninghttp://www.wikipedia.org/http://github.com/hector-client/hector
  42. 42. 더 궁금하신가요?빨리 메모하세요~basher97@gmail.com010-72xx-xx02http://www.facebook.com/luminancer

×