기록하게 된 이유팀 서비스 중 OOM으로 장애를 겪은 회고를 적어본다.장애가 실제 발생했을 때는 사실 GC나 jvm memory에 대한 경험이 부족해서원인 분석을 위해 어디부터 확인해야 될지 몰랐고, 추후에 원인 분석을 한 장애 보고서를 봐도 이해가 잘 안됐다.하지만 지금 다시 내용을 처음부터 살펴보니, 에러가 발생한 원인은 정말 생각지도 못한 부분이라 개인적으로 흥미로웠고,공부할 만한 내용들이 많다고 생각들어서 늦게나마 회고 형태로 정리해본다. 장애 상황서비스 중인 open-api 서버 10대 중 대부분의 서버에서 DB Connection 에러와 함께 java oom 이 발생했다.1차 대응으로 전체 was를 재기동 해봤지만, 얼마 지나지 않아 서비스 중단은 계속됐다. 용의자 1. Slow Query이 ..
기존 레거시를 msa 서버 어플리케이션으로 이관하는 작업을 중 마주한 에러다. 1. 내용 파악 이관된 비즈니스 로직에 오류가 있었다면 들어오는 request 마다 오류가 나야하는데 하루 1~2개 꼴로 간헐적으로 발생한다. IOException이라고 해서 헤더 값이나 Payload에 이상한 구분자가 있는지.. 스트림에 영향을 끼쳤을만한 내용을 확인해봐도 아무 문제가 없음. 스테이지에서 디버깅을 해봐도 재현이 되질 않음. 특정 인스턴스 문제인가 했지만 골고루 찍힌다. 2. 원인 Okhttp3 버그로 보인다. 클라이언트↔ 서버 간 keep-alive timeout 차이로 발생하는 이슈인데 이걸 IOException으로 던지고 있어서 파악하기 어려웠던 것. - retrofit2로 서버로 request 보내는 클..
오랜만에 알고리즘 문제 풀던 중 문자열 내 특수문자 한 종류를 제거하기 위해 다음과 같은 코드를 실행했다. str = str.replaceAll(c, ""); //c = "+" java.util.regex.PatternSyntaxException: Dangling meta character 예외가 발생했다. 사실 replaceAll이라는 함수 내용을 정확히 보지 않고 이름만 보고 str 내의 모든 c 를 "" 으로 바꾸어주겠지 싶었다. 이름만 봐서는 그냥 replace(a, b)는 가장 첫 a 만 바꾸어주는거고 replaceAll(a, b)는 문자열 내의 모든 a를 바꾸어주는거 처럼 보였기 때문이다... (찾아보니 많이들 이렇게 착각한다고..) replace() 와 replaceAll()은 모두 (Str..
- Total
- Today
- Yesterday
- decorator
- digital tree
- 모던 자바 인 액션
- 카카오 인턴
- 카카오코테
- behavior parameterization
- okhttp3
- 디자인패턴
- 프로그래밍 모델
- 스프링 컨테이너
- jvm
- 스프링
- KAKAO 2021
- WORA
- 카카오
- 신규 아이디 추천
- IOC
- 2020 KAKAO
- Java
- 코테
- 2019 Kakao Blind
- WORE
- nginx 내부
- 카카오 코테
- trie 소스코드
- 2021
- Java #JIT #JVM
- Kakao Blind
- Java #GC #가비지콜렉터 #Garbage Collector
- PatternSyntaxException
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |