전체 글

전체 글

    Cassandra DB 성능 개선기 (1) - Read ahead와 Disk I/O

    회사에서 플랫폼을 운영하면서 겪은 장애와 개선한 점들을 공유해보려고 합니다. Cassandra DB를 운영하면서 발생한 이슈이지만, 내용이 Cassandra DB에만 국한되지 않는 내용인 점 먼저 말씀드립니다. 장애 발생플랫폼을 운영하던 중, 피크 시간에 갑자기 요청이 밀리는 장애가 발생하였습니다.평소 한자리 이내의 ms의 Latency로 API를 제공하던 중, 갑자기 요청을 처리하기 위한 Latency가 500ms 이상으로 밀려버리는 장애가 발생하였습니다이러한 문제로 일부 요청들에 대해서, 처리가 밀려, 앞쪽 저희 플랫폼의 사용처들에서 Read Timeout이 발생하여, 제대로 요청을 처리할 수 없는 장애가 발생하였습니다 장애 원인장애 원인은 Disk I/O 사용량 (Disk Usages이 아닌, Di..

    [CassandraDB] 운영중인 CassandraDB 클러스터 이전 방법 (멀티 데이터센터 구성)

    회사에서 직접 운영하고 있는 Cassandra DB 클러스터 이관 등의 작업을 진행하였는데, 관련 방법들에 대해서 정리한 내용입니다. 참고로, 팀 내에서 운영하고 있는 여러 플랫폼의 메인 저장소로 CassandraDB를 운영하고 있으며, CassandraDB의 경우 별도의 DBA가 없어 팀 내에서 직접 운영하고 있습니다. 카산드라 클러스터 이관을 위해서 멀티 데이터센터를 구축해서 이전하는 방법으로 클러스터를 이전하였습니다. - 아래 예시들은 기존 데이터 센터를 dc1, 신규 데이터 센터를 dc2로 가정하고 작성되어 있는 점 참고 바랍니다. 이관 전 사전 체크 사항 Cassandra DB 설정 Snitch SimpleSnitch인 경우 단일 DataCenter를 위한 Snitch로, 멀티 데이터 센터 사용..

    가슴속 3천원 사이드 프로젝트 운영기

    안녕하세요. 가슴속 3천원 백엔드 개발자 강승호입니다. 가슴속 3천원은 본업과 별도로 개인 공부 목적으로 진행하고 있는 사이드 프로젝트입니다. 가슴속 3천원 같은 초기/소규모 서비스를 지속적으로 운영하기 위해서 해온 것들을 공유하고, 초기부터 서비스를 운영하면서 발생했던 문제점들을 해결해 온 내용들을 몇가지 공유드려보고자 합니다. 1. 가슴속 3천원 소개 가슴속 3천원은 주변의 붕어빵 등 길거리 음식/푸드트럭 파는 곳을 알려주는 서비스로, 겨울철만 되면, 생각나는 “붕어빵”을 파는 곳이 어딘지 알고 싶어서 만든 앱 서비스입니다. (앱 다운로드는 아래 링크에서 하실 수 있습니다~) AppStore (ios) PlayStore (android) 가슴속 3천원은 팀원 전체가 본업과 별도로 진행하는 사이드 프로..

    CassandraDB 버전 별 G1GC 기본 설정 정리

    Cassandra 버전별 JDK 지원 범위 (JDK 8 ~ 17) Cassandra 3.1: JDK 8 Cassandra 4.0: JDK 8, 11 Cassandra 4.1: JDK 8, 11 Cassandra 5.0: JDK 11, 17 G1GC Settings 현황 Cassandra 3.1: CMS(default), G1GC Cassandra 4.0: CMS(default), G1GC Cassandra 4.1: CMS, G1GC (default) 제공되는 G1GC 설정 값들 강화되었음 Cassandra 5.0: G1GC (default) Cassandra G1GC 세팅값 정리 JDK 11 1. Cassandra 4.0 ### G1 Settings ## Use the Hotspot garbage-fir..

    CassandraDB Snapshot

    Cassandra SnasphotCassandra DB에서 기본 설정 상 truncate or Drop 전에 Snapshot을 만든다. (cassandra.yml의 auto_snapshot 설정으로 default: true이다) 그래서, Truncate 및 Drop을 했는데, 실제 디스크 사용량이 줄어들지 않아서, 해당 데이터를 디스크에서 완전히 삭제하려면, Snapshot도 제거해야 한다.cf) 위의 케이스 이외에도 설정에 따라서 compaction, increment_backup 등에 의해서도 snapshot이 생성될 수 있음. 스냅샷 제거 방법./nodetool clearsnapshot --all--all: 모든 키스페이스에 속한 모든 스냅샷 제거./nodetool clearsnapshot --al..