이번에 화면 개발을 하면서 외부 API 연동을 통해 데이터를 조회 후 목록을 표시하는 것이다.
리스트는 약 2000건을 목표로 했으며 이상하게 로컬서버에서는 문제가 없었는데 운영 서버에서 5분이 지나가면 화면이 끊기는 오류가 발생했다.
그 이유는 로직이 오래 걸리기 때문이었다. 약 300건~400건 이하 조회 시 정상적으로 되지만 거의 5분 이상 지연 시 화면이 끊기고 서버는 외부 API와 연동을 하고 있었다. 데이터를 다 조회하고 웹 클라이언트에게 응답을 줘야 하는데 줄 수 없다는 에러메시지가 발생했다. 화면에서 끊기는 오류를 해결하고자 jeus나 webtob socket, connection timeout이라든지 이 부분을 열심히 찾아봤다. 어디에도 5분, 300초, 3000ms에 대한 limit이 없었다.
jeus web.xml 혹은 WebMain.xml에서 webtob와 연결하는 시간은 5분 보다도 적었다. 그리고 webtob에 있었던 http.m 파일은 jeus 서버와의 연결에 대한 timeout이 60초였던 것으로 기억한다. 서버 설정을 건드리는 것보다 로직을 개선하는 게 더 맞을 것 같다고 판단했다.
나는 비동기적으로 처리해야 한다고 생각했고 기존 데이터 연동 로직이 동기적으로 순차로 진행된 점이 시간적 성능에 제한이 된다고 여겨 화면단을 수정해 보기 시작했다. 데이터 개수를 모두 한꺼번에 외부 API를 가져오는 서비스를 실행하기로 했다. 기존 jquery를 사용해서 gson 데이터를 get 방식으로 가져오는 기능이 있어 참고했다.
결과적으로 화면에서 끊기는 오류는 없었고 시간적 성능도 빨라졌다. ajax 방식으로 구현해도 동일할 것이다.
일주일 간 성능을 개선시키고자 공부하고 시도해 본 기록이어서 남겨둔다.
참고 사이트
https://velog.io/@dearlee/jQuery-%EB%B9%84%EB%8F%99%EA%B8%B0-%ED%95%A8%EC%88%98-Ajax-.getJSON
[Spring] 컨트롤러, Model, ModelAndView 사용법
https://wonos.tistory.com/380
[jQuery] json 파일 읽기 - .getJSON() 과 .ajax() 차이
https://withthisclue.tistory.com/entry/jQuery-json-%ED%8C%8C%EC%9D%BC-%EC%9D%BD%EA%B8%B0-ajax-getJSON-%EC%B0%A8%EC%9D%B4
[WebtoB/JEUS] SvrChkTime, read-timeout - https://mcpaint.tistory.com/m/67
https://soniccho.tistory.com/m/entry/Nexacro-httptimeout-%EC%84%A4%EC%A0%95
Broken Pipe - https://k9e4h.tistory.com/m/353
[네트워크] 타임아웃 (Time-out) - https://seolki-log.tistory.com/m/24
'Web' 카테고리의 다른 글
Spring Interceptor 클래스 구현하기 (0) | 2023.07.19 |
---|---|
DriverSpy 라이브러리 사용하기 (0) | 2023.07.10 |
tomcat server 실행 시 해결된 문제들 (0) | 2023.04.27 |
Eclipse에서 SVN 플러그인 설치하기 (0) | 2023.03.08 |
하이브리드 앱, 웹 앱 제대로 배우기 (0) | 2020.02.22 |
댓글