728x90 Troubleshooting4 [JPA] N+1 문제 1. N+1 문제란? JPA에서 요청이 1개의 쿼리로 처리되길 기대했는데 N개의 추가 쿼리가 발생하는 현상으로 1:N 또는 N:1 관계를 가진 Entity 조회할 때 발생하게 된다. 이 문제는 서버와 DB 간의 악영향을 끼치는 큰 문제인데 10만, 100만 개 등의 많은 양의 데이터를 N+1의 DB 조회가 일어난다고 가정해보면 분명 서비스의 큰 문제가 발생하게 될 것이다. 정말 무섭다. 예전에 N+1 문제로 한참을 고생했던 기억이 있어서 다시 되새길 겸 N+1문제에 대해 다시 정리해보려고 한다. (그만큼 중요하다고 생각되는 문제) 2. Test 설정 테스트 위해 table 2개를 만들었다. note와 memo table이고 두 table에 관계는 1:N 관계로 간단하게 설정하였다. note table i.. 2022. 11. 12. [MySQL] Replication 동기화 시간 문제 문제 발생 프런트 클라이언트로부터 데이터 업데이트 요청을 받았고 DB에 업데이트를 정상적으로 처리했다. DB 업데이트 완료 이벤트를 다른 서버가 인지하고 업데이트 데이터를 조회했더니 간혈적으로 업데이트 이전 데이터가 조회는 현상이 있었다. 이 현상으로 인하여 데이터 무결성에 대한 문제를 인식하게 되었다. 클라이언트는 A서버에게 value를 20으로 업데이트 요청을 했고 A서버는 db에 데이터를 정상적으로 commit 했다. A서버는 B서버에게 데이터가 업데이트 완료된 상태를 알렸고 B서버는 value 값을 조회했는데 업데이트 이전 value값 10이 조회되었다. 원인 파악 DB 서버는 Master와 Slave로 되어 있고 Insert, Update, Delete는 Master(Write) 서버로 요청을 .. 2022. 11. 8. [Elastic Search] maximum shards open 에러 문제 발생 정상적으로 Elastic Search에 적재되던 로그들이 언제부터인가 적재가 되지 않기 시작하는 걸 발견하였다. CloudWatch의 로그 그룹을 Lambda를 통해 Elastic Search에 스트리밍 하는 방식이었기 때문에 CloudWatch 로그 그룹부터 확인하기 시작했다. CloudWatch 로그가 정상적으로 쌓이고 있는 걸 확인하였고 Lambda를 확인하니 Lambda 함수가 에러가 발생하고 있었다. Lambda에서 아래와 같은 에러가 발생되고 있었다. { "index": { "_index": "[]", "_type": "_doc", "_id": "37156103091093385677066907927746061092930918434506932224", "status": 400, "er.. 2022. 11. 8. [Elastic Search] Rejecting mapping update to... 여러 개의 CloudWatch 로그 그룹을 Lambda를 통해 Elasticsearch에 적재하고 있었는데 이번에 Elasticsearch 5.X 버전을 사용하다. Elasticsearch 7.X 버전으로 업그레이드를 진행했다. 서비스 로그 파일들을 Bulk 색인 시 Elasticsearch에서 아래와 같은 에러가 발생되었다. { "index": { "_index": "[]", "_type": "[]", "_id": "37179865679911174822595041378954569963025140112055009280", "status": 400, "error": { "type": "illegal_argument_exception", "reason": "Rejecting mapping update to .. 2022. 11. 7. 이전 1 다음 300x250