프로젝트_트러블슈팅(12)
-
[PersonaAI - 비공개 프로젝트 d-3] GC Pause Full 발생
프로젝트를 개발 서버에 배포하고 테스트 진행중 웹이 멈추는 현상이 발생했다. 바로 해당 서버의 로그를 확인해보니 원인은 GC Pause Full 가비지 컬렉터의 메모리 문제였다. 일단은 서버복구가 급선무였고 마침 이전 프로젝트에서도 Java 서버에 heap out 이 된 경험이 있어서 root.xml에 가서 메모리를 늘려주고 기존에 멈춰버린 프로젝트를 직접 kill 하고 재실행 해줬다.( kill을 해줬는데 한번에 안죽어서 당황했다. 이런 상황에선 kill 하고나서 한번더 ps -ef로 다시 확인해보자!!) 하지만 이 상태로는 다시 GC의 메모리 문제가 생기는 것은 시간문제였기 때문에 소스 수정에 들어갔다. GC에 문제가 생길만한 부분은 불필요한 변수 또는 반복적인 객체 선언 그리고 데이터를 제대로 ..
2024.07.31 -
[PersonaAI - 비공개 프로젝트 d-2] 파일다운로드 기능 오작동
파일 다운로드 Back-End단 로직을 구현하고 Front-End 단에서 버튼 클릭으로 호출을 했는데 다운로드가 되지 않았다. 메소드를 안 탔나 확인해 봤지만 메소드도 탔고 Back-End 단에서도 로직이 정상적으로 실행되고 Exception도 뱉지 않았다. 원인을 찾기 위해 개발자도구의 네트워크에 들어가 요청-응답정보를 확인해보는데 200으로 정상 응답이 도착해있었다. 해당 파일명도 떠있길래 더블클릭 해봤더니 다운로드가 된다... 그렇다면 Front단 Back단 모두 코드 로직에서는 틀린게 없었다고 가설을 하고 다른 곳에 문제점을 찾기 시작했다. 크롬 브라우저로 로컬을 테스트해보고 있었는데 브라우져의 문제인가 해서 엣지로 바꿔서 테스트를 해봤다.결과는 이상무 ajax로 요청을 보내고 있었는데 이 설정이..
2024.07.31 -
[PersonaAI - 비공개 프로젝트 d] myBatis useGeneratedKeys 안될때
회사 솔루션에 새로 들어갈 기능 일부를 맡아서 개발을 시작했다. 내가 맡은 부분은 트리구조로 사용자가 사내 on-premise로 운영중인 서버 내의 NAS 서버 디렉토리 안에 디렉토리를 자유롭게 생성하고 파일을 저장하고 그 파일을 RAG에 자동으로 Embedding 시키는 것 까지가 내 역할이었다. 순조롭게 개발되다가 예상치 못한 부분에서 막혀버렸다. 하지만 파일 저장 후 Embedding을 하는데 예외처리를 하면서 실패/성공 사유를 로그로 쌓으려고 DB에 저장된 파일 정보의 Index를 받아오려했지만 실패한것이다. 해당 솔루션은 속도이슈로 JPA 를 걷어내고 myBatis를 쓰고 있었기 때문에 무난하고 쉽게 insert 태그에 useGeneratedKeys를 활용해서 만들었었다. 디버깅 모드로 확인해 ..
2024.07.25 -
[PersonaAI - 비공개 프로젝트b-2] Java 크롤링
node.js로 했던 작업을 Java로 변경해달란 요청이 있었다. 기존 크롤링이 웹드라이버를 쓰는 방식으로 요청받아서 Sellenium 라이브러리를 사용해서 크롤링을 진행했었지만 이번엔 그런것과 무관하게 크롤링만 되기만 하면 된다는 것 같다. 하지만 일단은 기존의 것을 그대로 자바를 옮기는게 편할 것 같았고 다른 자바에서 크롤링할 때쓰는 라이브러리가 있는지도 또 찾아봐야했기에 node.js코드를 Java로 바꾸기만 했다. 그런데 실행했더니 에러가 생겼다. [에러는 나중에 첨부] 에러 내용은 라이브러리 충돌 이슈였다. 이 프로젝트 하나만을 배포해 쓰는 서버면 그냥 라이브러리도 마음대로 뒤집어 엎었겠지만 기존의 솔루션 서버에 추가로 올리는 거다 보니 기존것을 손댈긴 어려웠다. 어떤 라이브러리에서 문제가 생기..
2024.03.12 -
[PersonaAI - 비공개 프로젝트b] try-catch문 에러 catch 실패
node 서버로 구축한 API 호출을 시도 했으나 실행되는 도중 API안에 크롤링을 진행하는 로직이 멈추는 일이 발생 함수는 try-catch로 감싸고 있었으나 catch문에 넣은 에러 알림 코드 또한 실행이 안되는 문제가 생겼다. 기능이 실행이 안되지만 에러또한 모르는 상황이 발생하니 해결을 위한 시도를 여러 방면으로 해봤다. 1. 모든 구간마다 log를 찍어 확인 -> router.post 함수안에 try - catch 중 try 안에 또 try-catch가 있는 구조 였는데 안쪽 try문이 실행안되는 것 확인! 2. 렌더링 순서 문제인지 확인 -> 바깥 쪽 try문에 정의된 함수를 await 함수() 로 사용했기에 이 문제는 아니라고 추측 3. 일단 에러가 뜨지 않는 상황이기에 catch에 집중 1..
2024.02.23 -
[PersonaAI - 비공개 프로젝트b] node.js 크롤링
1. 크롤링 라이브러리 : node.js의 크롤링 용 라이브러리인 cheerio로 하려했지만 웹드라이버를 쓰지 않는 방법이라 사용이 제한적 : selenium-webdriver 를 사용하면서 해결 2. 크롬드라이버 설치 1) 버전 : 그냥 가장 최신 버전을 다운로드 했지만 내 컴퓨터의 크롬과 버전이 일치해야함 ( 내 버전확인 : 크롬 오른쪽위 케밥 ?(...세로로 돌린 모양의 메뉴 아이콘) - 톱니(설정) - 왼쪽 목록 맨아래 Chrome 정보 ) 2) 크롬드라이버 경로 : 해당 크롤링 구동 파일과 같은 dir에 넣어야함 - 넣을 파일 : chrome.exe ( => 예전 블로그들 보면 chromedriver.ini? 이걸 넣으라 던데 바뀐거 같음(그런게 없음) ) 3. 크롤링 파일 실행 terminal..
2024.02.23