Spring MVC (Kotlin) + Undertow 를 사용한 운영 서버에서 아래와 같이 500 응답을 받았지만 서버에는 관련된 로그가 남아있지 않음.{ "timestamp" : 1727658994786, "status": 500, "error": "Internal Server Error", "message": "Internal Server Error", "path": "/search"} 예외가 발생한 부분은 Kotlin 에서 Non Null 로 정의된 필드에 DB 에서 불러온 데이터를 맵핑할때 null 값이 할당되어 MissingKotlinParameterException 이 발생한 것으로 추정됨. 해당 예외가 아닌 다른 예외들은 로컬에서 로그가 남고 있어서 어느 부분에서 차이..
운영중인 서버에서 CurrentThreadBusy 메트릭이 튀기 시작하였다. 특징은 순간적으로 Spike 를 쳤다가 다시 정상 범위로 돌아가고 간헐적으로 여러 서버에서 튄다는 것이다.tomcat thread 들이 어느 stack trace 에서 busy 상태로 남아있는지 확인하기 위하여 0.5초 마다 currentThreadbusy 값을 확인하면서 임계치를 초과한경우 thread dump 를 생성하도록 스크립트를 작성하여 배포하였다. #!/bin/bashCRITICAL_VALUE=20while [true]do sleep 0.5 CURRENT_THREAD_BUSY=`curl -s http://127.0.0.1:9403 | grep'catalina_threadpool_currentthreadbusy' | a..
현상 Docker 이미지로 만들어져있는 Zookeeper 를 구성할때 아래와 같은 에러가 발생하고 zookeeper cli 로 /get 를 해보아도 timed out 이 발생 2023-07-27 09:18:07,435 [myid:3] - WARN [QuorumPeer[myid=3]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@584] - Cannot open channel to 2 at election address /10.0.0.1:3888 원인 Zookeeper 는 아래와 같이 3개의 포트를 사용한다. 2181 : Client 가 zookeeper 에 접근하기 위한 포트 2888 : Node 간의 통신에 사용. Follower 커넥션에 사용됨. (설정 파일에 따라 달라질 수 있..
Latency 측정을 위해 Logstash 를 이용해 Nginx 의 access.log 를 분석하여 수집하고있다. logstash:2.4.1 -> logstash:7.16.2 로 버전을 올리면서 OOM 이 발생하여 원인을 파악하기 시작하였다. 서버 환경 Logstash 가 배포되는 서버는 Kubernetes 환경의 WorkerNode 에 배포되고 있으며 컨테이너의 리소스. requested_memory: 1G requested_cpu: 500m 증상 logstash 의 Base Image 를 logstash:2.4.1 -> logstash:7.16.2 로 변경하면 아래와 같이 logstash 가 시작되자마자 OOM Killed Last Termination State: Exit Code: 137 Reas..
현상 평소와 같은 요청량을 처리하는 서버에서 간혹 Minor GC 가 튀는 것을 Alert 과 Metric 으로 확인하였다. 요청량이 증가하지 않았는데 하나의 노드에서만 Minor GC 가 증가하였다. 각 매트릭의 의미는 아래와 같다. Minor GC count : 1분동안 발생한 gc log 에 기록된 Minor GC 수의 합. Minor GC Time : 1분동안 발생한 gc log 에 기록된 Minor GC 가 걸린 시간의 총 합. Minor GC 가 튀는 것은 당장의 문제가 되지는 않지만 문제가 누적되면 후에 장애로 발전할 수 있기 때문에 원인을 파악해보기로 결정. 분석 어떤 요청에 의해서 Minor GC 가 튀는건지 확인. 동일한 버전으로 서빙되는 서버중 특정 서버에서만 Minor GC 가 튀는..
UI 리뉴얼 시점부터 몇몇 서버들에서 memory leak 발생하였고 이로 인해 Full GC 발생. Heap dump 떠서 확인해보니 GuavaTemplateCache 에 cache 가 2G 를 차지하고 있었음 하지만 로컬에서 동일한 조건에서 테스트를 해보았는데 NullTemplateCache 를 타고 GuavaTemplateCache 는 타지 않음 spring boot 의 AutoConfiguration 에 의해서 GuavaTemplateCache 빈이 생성되기는 하나 설정 값에 의해서 NullTemplateCache 가 사용됨. 아래와 같은 의문들이 생겼다. 의문1) Local 은 NullTemplateCache 가 사용되는데 운영에서는 GuavaTemplateCache 가 사용되는 이유? 의문2)..
proxied server 에서 302 Redirect 응답을 할 경우에 host 가 변경되는것으로 보임. my-host.woongs.com -> host1.woongs.com 으로 routing 될때 host1.woongs.com 에서 /url/redirected 로 redirect 하게 되면 my-host.woongs.com/url/redirected 로 가야 하는데 host1.woongs.com/redirected 로 가게 된다. host1.woongs.com 이 Internal 만 접근 가능하게 네트워크 설정이 되어있다면 이때 문제가 접속이 안되는 문제가 발생. 해당 문제는 Local 에서는 발생하지 않았고 개발 테스트 존에서만 발생하였다. 로컬에서 재현 안됨 안되는 이유 - 개발환경 에는 Loc..
운영중이던 Tomcat 이 갑자기 Exit 되었다. Mar 16, 2020 6:12:58 PM org.apache.catalina.core.StandardService stopInternal INFO: Stopping service Catalina ... Mar 16, 2020 6:13:05 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesJdbc WARNING: The web application [ROOT] registered the JDBC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To preven..
Spring Boot 설정 중에 Runtime 에 AbstractMethodError 가 발생하였다. What is AbstractMethodError (출처 : https://docs.oracle.com/javase/7/docs/api/java/lang/AbstractMethodError.html) Thrown when an application tries to call an abstract method. Normally, this error is caught by the compiler; this error can only occur at run time if the definition of some class has incompatibly changed since the currently execu..
batch was fail every 4~5 times per day all of fail reason are same. docker: Error response from daemon: service endpoint with name {randomName} already exists. common error alarm make developer insensitive batch fail. root cause of above error is docker bridge network connection is still connected even docker container removed. for long term, we should check why bridge connection is alive even d..
- Total
- Today
- Yesterday
- custom config data convertion
- RoutePredication
- Seperate Chaining
- getBoolean
- HashMap
- aurora
- ResultSet
- reactor
- msyql-connector-java
- mariadb-connector-j
- notifyAll()
- circurit breaker
- wait()
- Flux
- GlobalFilter
- Lazy
- RouteDefinition
- reative
- notify()
- ConcurrentHashMap
- spring cloud gateway
- referencedColumnName
- router
- dynamodb
- mariada-connector
- N+1
- rate limit
- AbstractMethodError
- MariaDB
- DyanomoDB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |