트러블 슈팅/인프라

상황 카프카를 운영하다 보니, 가끔 일부 컨슈머에서 이유를 알 수 없는 지연이 발생할 때가 있었다. 현재 컨슈머에 문제가 생기면 자동으로 재시작되도록 설계되어 있어 큰 문제가 되지 않는다. 그런데 인터널 토픽을 사용하는 스트림에서는 상황이 좀 다르다. 인터널 토픽에서 지연이 발생하면 컨슈머가 재시작되지 않는 문제가 있는 것 같다.  이를 해결하기 위하여 종종 수동으로 statefulset 재시작하였고, 추후 재시작 자동화를 위해서 하기 아래 포스팅과 같이 세팅을 해주었다. (Kafka) Kafka Streams에서 Repartition Topic을 Consume하지 못하는 장애 (feat: Metric으로 Lag값 추출)상황카프카를 운영하다 보니, 가끔 일부 컨슈머에서 이유를 알 수 없는 지연이 발생할 ..
상황카프카를 운영하다 보니, 가끔 일부 컨슈머에서 이유를 알 수 없는 지연이 발생할 때가 있었다. 현재 컨슈머에 문제가 생기면 자동으로 재시작되도록 설계되어 있어 큰 문제가 되지 않는다. 그런데 인터널 토픽을 사용하는 스트림에서는 상황이 좀 다르다. 인터널 토픽에서 지연이 발생하면 컨슈머가 재시작되지 않는 문제가 있는 것 같다. 카프카 Streams에서는 내부적으로 Repartition Topic을 사용하는데 이 중 repartition Topic에서 장애가 발생한 것이다. 이를 해결하기 위하여 종종 수동으로 statefulset 재시작하였다. 원인우선 저수준에서 일어나는 일을 분석하여 보았다. 컨슈머 지연(Lag)의 근본적인 원인은 컨슈머 스레드와 파티션 매핑이 꼬여 발생하는 것으로 판단되었다. n-1..
상황 특정 토픽을 Consume 어플리케이션에서 장애가 난 상황. 이로 인해 Lag이 천정부지로 치솟고 있었다. 또한 이 토픽을 사용하는 kafka to s3 커넥터에서도 장애가 발생하였다. 원인 해당 토픽을 사용하는 어플리케이션들은 해당 토픽의 Value를 Json으로 기대하여 Json 파싱하고 있었다. 그런데 유효하지 않은 데이터가 들어가서, Json Parsing 에러를 발생시킨 것. 해결 방안 우선 장애가 발생한 파티션을 찾아야했다. 장애가 발생한 파티션을 찾기 위해서 쉘 스크립트를 만들어 돌려서, 장애 발생 토픽을 찾아냈다.BROKER="브로커 호스트"GROUP="장애가 발생한 토픽을 사용하는 컨슈머 그룹 명"TOPIC="토픽 명"MAX_MESSAGES=15 (콘솔에서 보여줄 메세지 갯수)/op..
상황 (Airflow) 배치 날짜값 오차로 인한 통계값 오류가 발생한 이슈 1상황Airflow를 이용해서 low한 통계 데이터를 집계하는 API를 호출하여 daily 과금 금액과 total 과금 금액을 집계한다. 이때 과금 금액을 "사용한 값" 이라고 하자. "사용한 값"은 00시에 0으로 리셋해준wise-dev-seop.tistory.com 위 글에 이어 추가로 과소진이 발생한 이슈. 간단히 설명하자면 통계값을 업데이트 할 때 전날 늦은 시간에 돌았던 select 쿼리가 다음날 완성되면서 하루 전 날 값이 엎어쳐지는 이슈였다. 이를 해결하기 위해서 시간값을 세션 변수에 담아두고 업데이트 시점에 이 날짜가 동일한지(하루 지나지 않았는지) 확인해주는 작업을 해주었었다. 이렇게 잘 해결되었으나 또 추가로 전..