본문 바로가기

[Tomcat] OutOfMemory시 톰캣 자동 재시작 운영중인 톰캣이 OutOfMemory를 뱉어내고 작동을 안하는 경우가 있다. 관제 시스템이 잘 갖춰진 운영 환경이라면, 담당자에게 바로 알림이 가고 특정 시간내에 처리가 가능하겠지만,그렇지 않은경우에는 의도치 않게 장애가 길어지게 된다. OutOfMemory가 발생된 후 톰캣이 실행중인데 작동 불능에 빠졌을경우 누군가 조치를 취해주지 않거나 톰캣 상태를 모니터링해주는 자동화된 도구가 없다면 어떻게 해야할까? 이럴때는 JVM 옵션을 이용하여 후속 조치가 가능하다. OnOutOfMemoryError 옵션을 이용할 경우 OutOfMemroy 발생 이후에 특정 동작을 지정할 수 있다. 톰캣 catalina.sh 파일의 CATALINA_OPTS 옵션에 "-XX:+HeapDumpOnOutOfMemoryError -.. 더보기
[Tomcat] 톰캣 실행여부 확인 및 시작 Shell Script 서버를 운영하다보면 장애 대응을 위하여 여러가지 대비책을 세우게 되는데,Tomcat을 사용하는 곳에서 많이 이용하는것중 하나가 톰캣을 자동으로 시작 시킬수 있는 shell Script가 아닐까 싶다. 아래 스크립트는 톰캣의 PID와 개수를 확인하여 톰캣이 실행중이지 않을때 톰캣을 자동으로 시작시켜주는 쉘 스크립트 이다. * 주의 : 서버에 톰캣 1개만 설치되어 있다는 가정하에 작성 #!/bin/sh export JAVA_HOME=/usr/local/java export PATH="$PATH:$JAVA_HOME/bin" export CATALINA_HOME=/usr/local/tomcat Log=$CATALINA_HOME/logs/restart.log DATE=`date +%Y%m%d-%H%M%S` # 톰.. 더보기
[MyBatis] 오라클 java.math.BigDecimal Exception MyBatis와 오라클을 연동하여 사용하다보면 조회결과를 HashMap으로 받는 경우가 있는데, 이때 특정 컬럼의 필드가 Int, Number 와 같은 숫자형 일때 해당 데이터를 get 하여 임의 변수에 할당하는 과정에서 java.math.BigDecimal Exception 이 발생하는 경우가 종종 있다. 신기하게도 오라클에서만 발생되는 오류같아 보이는데, 이는 숫자형 데이터가 int나 Integer가 아닌 BigDecimal로 지정되어 있어 그런듯 하다. 처리하기 가장 좋은 방법은 정석대로 BigDecimal 변수를 할당하여 casting 해주면 되나, 굳이 BigDecimal 타입을 사용할 필요가 없다면 아래와 같이 String, int 형으로도 사용할 수 있다. HashMap rsHmap = me.. 더보기