[자바성능튜닝이야기] 24. 애플리케이션에서 점검해야 할 대상들
24. 애플리케이션에서 점검해야 할 대상들
-
패턴과 아키텍처
- 너무 많은 패턴을 사용하지 않았는가?
- 데이터를 리턴할 때 TO(VO) 패턴을 사용하였는가?
- 서비스 로케이터 패턴은 적용이 되어 있는가?
- 서비스 로케이터 패턴? 애플리케이션에서 필요한 대상을 찾는 룩업 작업을 할때 소요되는 대기시간을 줄일 수 있다. - 기본적인 애플리케이션 코딩
- 명명 규칙은 잘 지켰는가?
- 필요한 부분에 예외 처리 되어 있는가?
- 예외 화면은 지정되어 있는가?
- 예외 정보를 혹시 e.printStackTrace()로만 처리하고 있지 않은가?
- System.gc() 메서드가 소스에 포함되어 있지 않은가?
- System.exit() 메서드가 소스에 포함되어 있지 않은가?
- 문자열을 계속 더하도록 코딩하지는 않았는가?
- StringBuffer나 StringBuilder 클래스도 제대로 사용했는가?
- 무한 루프가 작동할 만한 코드는 없는가?
- static을 남발하지 않았는가?
- 필요한 부분에 synchronized블록을 사용하였는가?
- IO가 계속 발생하도록 계발되어 있지는 않은가?
- 필요없는 로그는 다 제거했는가?
- 디버그용 System.out.println()은 다 제거 했는가? - 웹 관련 코딩
- JSP의 include는 동적으로 했는가? 아니면 정적으로 했는가?
- 자바 빈즈는 너무 많이 사용하지 않았나?
- 태그 라이브러리는 적절하게 사용했나?
- EJB는 적절하게 사용하였나?
- Enterprise Java Bean? 서버측 컴포넌트모델, 비지니스 로직담당, EJB컨테이너에서 운영
- 이미지 서버를 사용할 수 있는 환경인가?
- 사용 중인 프레임워크는 검증되었는가? - DB관련
- 적절한 JDBC 드라이버를 사용하는가?
- DB Connection, Statement, ResultSet은 잘 닫았는가?
- DB Connection Pool은 잘 사용하고 있는가?
- 자동 커밋 모드에 대한 고려는 하였는가?
- ResultSet.last() 메서드를 사용하였는가?
- PreparedStatements를 사용하였는가? - 서버 설정
- 자바VM 관련 옵션들은 제대로 설정되어 있는가?
- 메모리는 몇 MB로 설정해 놓았는가?
- GC 설정은 어떻게 되어 있는가?
- 서버가 운영모드인지 개발모드 인지 확인하였는가?
- WAS의 인스턴스가 몇개 기동되고 있는가?
- JSP Precompile 옵션은 지정해 놓았는가?
- DB Connection Pool 개수와 스레드 개수는 적절한가?
- 세션 타임아웃시간은 적절한가
- 검색서버가 있다면, 검색 서버에 대한 설정 및 성능 테스트를 하였는가? - 모니터링
- 웹 로그(Access log)는 남기고 있는가?
- verbosegc 옵션은 남기고 있는가?
- 각종 로그 파일에 대한 규칙은 있는가?
- 서버의 시스템 사용률은 로그로 남기고 있는가?
- 모니터링 툴은 사용중인가?
- 모니터링 툴에 대한 설정은 적절하게 되어 있는가?
- 서버가 갑자기 코어 덤프를 발생시키지 않는가?
- 코어덤프? 특정시점에 작업중이던 메모리 상태를 기록한 것, 보통 프로그램이 비정상적으로 종료했을 때 만들어진다.
- 응답 시간이 너무 느리지 않은가?