개요 최근 슬로우 퀴리 이슈를 해결하면서 비약적인 속도 향상을 경험했는데, 사실 지금도 완전히 이해가 되지 않는 기묘한 부분이라 먼저 정리해둔다. 확인된 이슈 문제의 쿼리는 아래 모양새의 전형적인 페이지네이션 쿼리이다. (실제 운영 쿼리는 복잡한 여러 JOIN 절이 추가되어 있다.) SELECT * FROM foo WHERE ... ORDER BY created_at, id LIMIT 500 OFFSET 0; 신기한 점은 대부분의 쿼리 조건에서는 전혀 문제가 없었지만 특정 조건에서만 ORDER BY, LIMIT, OFFSET의 조합이 30~50초의 슬로우 쿼리로 모니터링되었다.처음에는 WHERE 조건의 대상과 순서를 적절히 재배치하여 효과를 보았지만, 모니터링 결과 이 것이 단순한 인덱스 사용 효율의 문..
개요 Spring Boot, JPA 환경에서 개발자를 당황시키는 AssertionFailure 예외가 발생하는 이유와 해결책을 정리하였다. org.hibernate.AssertionFailure: null id in com.jsonobject.domain.Foo entry (don't flush the Session after an exception occurs) AssertionFailure 예외가 발생하는 이유 AssertionFailure 예외를 발생시킨 지점은 실제 범인이 아닐 가능성이 높다. 같은 트랜잭션(세션) 범위 내에서 앞서 실행된 어떤 쿼리가 영향을 미쳤을 확률이 높다. AssertionFailure 예외는 @Transactional이 명시된 세션 내의 복수개의 쿼리가 연속적으로 실행되는..
개요 NGINX는 오랜 역사와 뛰어난 성능을 자랑하는 오픈 소스 리버스 프록시 소프트웨어이다. 일반적으로는 고정된 특정 목적지에 대한 리버스 프록시이자 로드 밸런서로 구성하는데 사용되는데, 이번 글에서는 요청 정보에 포함된 목적지 주소를 인식하여 다이나믹 리버스 프록시로 셋업하는 방법을 간단히 소개하고자 한다. (NGINX에 대한 자세한 사용법은 본 블로그의 이 글을 참고한다.) Dockerfile Dockerfile을 아래와 같이 작성한다. 직접 작성한 NGINX 설정 파일을 복사하는 과정을 추가했다. FROM public.ecr.aws/nginx/nginx:latest EXPOSE 80 COPY default.conf /etc/nginx/conf.d/default.conf default.conf NG..
개요 Graylog는 여러 곳에 분산된 마이크로서비스들의 로그를 중앙에서 수집하고 관리할 수 있게 해주는 오픈 소스 통합 중앙 로그 관제 플랫폼이다. Key-Value 기반의 독자적인 GELF 로그 포맷을 지원하며 v4.0.0 버전부터는 로그 저장소로 Elasticsearch 7.10을 지원한다. 이번 글에서는 Spring Boot 기반 프로젝트에서 GELF UDP 로그를 전송하는 방법을 설명하고자 한다. 구조화된 로그가 필요한 이유 AI의 등장과 함께 이제 애플리케이션 로그는 사람이 보는 정보가 아니라 기계가 분석하는 정보가 되었다. 기계가 로그를 분석하려면 기존의 전통적인 라인 단위의 텍스트 로그로는 부족하다. 잘 설계된 구조화된 로그를 전송하면 기계에 의해 분석되어 유의미한 데이터로 가공될 수 있다..
- Total
- Today
- Yesterday
- 태그를 입력해 주세요.
- DynamoDB
- Tomcat
- jstl
- java
- Kendo UI
- JHipster
- jpa
- Eclipse
- Docker
- jsp
- 자전거
- 평속
- 알뜰폰
- graylog
- 로드바이크
- node.js
- spring
- maven
- Spring Boot
- 구동계
- JavaScript
- Spring MVC 3
- chrome
- CentOS
- Kendo UI Web Grid
- MySQL
- bootstrap
- kotlin
- 로드 바이크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |