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..
작은 파란색 원 : Oracle 문서에서는 regular young-only collection 이라고 표현, Young 영역에 대한 GC 발생 (STW) 작은 분홍색 원 : Oracle 문서에서는 multiple mixed colletions 이라고 표현, Young 과 Old 영역 모두에 대한 GC 발생 (STW) 원의 크기는 STW 의 소요 시간과 비례한다. G1GC 는 regular young-only collection 만 주기적으로 진행 GC 로그 상 Eden 영역이 가득 찼을때 regular young-only collection 이 트리거되는것으로 보임 regular young-only collection 만 진행하다가 Old 영역의 사용량이 임계치에 도달하면 Initial Mark 단계를..
운영 중인 서버에서 ConcurrentModificationException 가 발생하여 원인 파악을 시작하였다. 예외가 발생한 코드 재현 Map reduce = IntStream.range(0, 100) .parallel() .mapToObj((num) -> { Map map = new HashMap(); map.put(num, num); return map; }) .reduce(new HashMap(), (a, b) -> { a.putAll(b); return a; }); 에러가 발생한 로직을 간단하게 요약하면 위와 같이 정리가 되는데 운영 코드에서는 mapToObj 부분에서 I/O 를 실행하고 있다. I/O 를 Parallel 하게 실행하기 위하여 Stream 의 Parallel 을 사용하고 있다...
ExecutorService executorService = Executors.newFixedThreadPool(3); Stream.of(3, 2, 1) .map((i) -> CompletableFuture.supplyAsync(() -> { try { System.out.println(Thread.currentThread().getName() + " : start"); Thread.sleep(i * 1000L); System.out.println(Thread.currentThread().getName() + " : end"); } catch (InterruptedException e) { throw new RuntimeException(e); } return i; }, executorService)) ..
현상 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 커넥션에 사용됨. (설정 파일에 따라 달라질 수 있..
AWS 에서 DynamoDB 로컬 환경을 위한 테스트 환경을 제공한다. Local 에서 DynamoDB 실행하기 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBLocal.DownloadingAndRunning.html Deploying DynamoDB locally on your computer - Amazon DynamoDB The YAML scripts require that you specify an AWS access key and an AWS secret key, but they are not required to be valid AWS keys for you to access DynamoDB local. doc..
TLS 는 SSL 과 같은 의미이여 TCP 통신에서 오고가는 데이터를 암호화하기 위한 프로토콜이다. TLS 과정 인증서 발급 TLS 인증을 하고자하는 서버가 CA (Certifiacate Authorities : 인증서 발급 기관) 로부터 인증서를 발급 받는다. Server 는 공개키/비공개키를 생성하고 인증서 신청시 공개키를 CA 에 전달 CA 는 인증서에 Server 의 공개키를 포함하여 인증서를 생성 CA 는 인증서 내용을 Hash 처리한 값을 CA 의 비밀키로 암호화하여 인증서에 포함 TLS 연결 Client 와 Server 가 HTTP Handshake 이후에 TLS 인증 절차를 거친다. Client 는 Server 에게 ssl 버전, 사용 가능한 암호화 프로토콜등을 전달한다. Server 는 ..
Naming Rules DynamoDB의 테이블, Attributes 와 다른 오브젝트들은 이름을 갖는다. 이름은 의미를 잘 전달할 수 있어야하며 간결해야한다. 예를들어, 상품, 책, 저자와 같이 이름만으로 의미를 알 수 있어야한다. 아래 설명들은 DynamoDB 의 네이밍 규칙을 설명한다: 모든 이름은 UTF-8 로 인코딩되며 대소문자를 구별한다. 테이블명과 인덱셔명은 3글자이상 255자이하여야하며 아래여야하며 아래 문자들로 구성될 수 있다 a-z A-Z 0-9 _ - . Attribute 이름은 한개 이상의 문자여야하며 64KB 이하여야한다. Attribute 이름은 가능한 짧게 관리하는것을 권장한다. Attribute 이름 또한 Read 요청에 응답값으로 함께 전달되기 때문이다. 아래 이름들은 At..
- Total
- Today
- Yesterday
- Flux
- reative
- msyql-connector-java
- dynamodb
- Seperate Chaining
- circurit breaker
- aurora
- wait()
- mariada-connector
- notify()
- notifyAll()
- AbstractMethodError
- rate limit
- N+1
- HashMap
- DyanomoDB
- getBoolean
- custom config data convertion
- RoutePredication
- ConcurrentHashMap
- spring cloud gateway
- GlobalFilter
- referencedColumnName
- router
- MariaDB
- Lazy
- ResultSet
- mariadb-connector-j
- reactor
- RouteDefinition
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |