ObjectMapper 설정 Spring에서 설정 모르는 필드에 대해서 Deserialize 할 때 무시하도록 설정을 했어야 했다. 인터넷 글을 검색해가며 ObjectMapper의 Global 설정 방법을 찾아봤지만 막상 적용했을 때 제대로 동작하는게 없었다. SpringBoot를 주로 사용했어서 xml로 bean을 설정하는 방법에 익숙하지 않아서 많이 헤맸었다. 옆에 계신 분의 도움으로 설정할 수 있었다. 설정 파일을 보면 이렇게 ObjectMapper 관련 설정이 HibernateAwareObjectMapper에 있는 것을 알 수 있었고, public class HibernateAwareObjectMapper extends ObjectMapper { private static final long se..
shell script를 kill 할 때 하던 작업을 모두 완료한 후 process를 죽여야 했다. 지금까진 그냥 kill을 했었는데 중간에 kill 하면 데이터가 유실되는 상황 이 있었고 그게 문제가 되었다. 해결법을 이리 저리 찾아보다 적절한 방법을 찾게되어 기록한다. 해결방법 일정 count 만큼 loop를 돌면 shell이 재실행 되지만 그 때까지 마냥 기다릴 순 없었다. 처음엔 shell이 작업하지 않는 타이밍을 찾으려 했다. 하지만 정확한 시점을 찾기가 어려워 보였다. 강제로 종료하는 것이 아니고 작업을 모두 마치고 종료하는 방법이 뭐가 있을까 고민하다 문득 어디에선가 ‘graceful shutdown’이라는 로그를 본 기억이 났다. shell script graceful shutdown 이라..
AOP(Aspect-oriendted Programming)는 OOP를 보완하는 수단으로, 흩어진 Aspect를 모듈화 할 수 있는 프로그래밍 기법 이고, Autowired는 Spring에서 아~주 간편하게 의존성을 주입하는 방법이다. 토이프로젝트를 진행하며 AOP와 Autowired를 함께 사용하다 겪은 문제상황과 이를 해결한 경험을 기록해놓고자 한다. 문제상황 Controller에 Bean으로 등록한 Service를 @Autowired를 통해 주입 받아 사용하려 했지만 BeanNotOfRequiredTypeException이 발생했다. 분명 어제까진 된것 같은데... 뭐때문에 발생한걸까? BeanNotOfRequiredTypeException은 언제 발생하지? spring 문서를 보면 이 Except..
고객사로부터 특정 요청이 간헐적으로 실패가 난다는 이슈가 접수되었다. 로그를 확인해보니 Deadlock exception 발생하고 있었고 이슈를 해결하며 찾아보며 알게된 것들을 정리한다. 환경 DB MariaDB Engine InnoDB Isolation Level Repeatable Read 현상 톰캣 catalina 로그를 확인해보면 아래와 같은 exception 나고 있었다. exception내용 : Deadlock found when trying to get lock; try restarting transaction 일단 exception메시지를 보면 lock을 가져오려 하는데 Deadlock이 발생하여 트랜잭션을 재시작하겠다 정도로 해석할 수 있다. 당장 떠오른 해결방법은 두가지 였고, 장단점은..
회사의 무궁한 발전을 기원하며! 100만 동접을 대비하기 위해 서버의 성능을 측정해 보았다. 구성 인스턴스 구성 aws에 구성하였다. core 1대 * agent 5대 테스트 스크립트 groovy gradle project를 이용하여 스크립트를 작성하였다. 테스트 할때 필요한 의존성 라이브러리를 추가할 수 있다. 테스트 서버 dev zone에 있는 테스트 서버를 대상으로 하였다. 테스트 서버는 라이브와 동일한 스팩으로 구성하였다. 테스트서버는 load balancer에 연결 되어 있고, 서버 인스턴스 10대, db, redis에 연결되어 있다. 테스트 결과 tps 17000정도 나왔다. 생각보다 낮은 tps에 당황 테스트 도중 예상하지 못했던 에러가 발생 하여 서버 튜닝을 함께 진행하였다. 해결한 이슈 ..
- Total
- Today
- Yesterday