DataSource JNDI Lookup 관련 성능 저하
- 작성자 :
- 박*국
- 작성일 :
- 2012-04-29 23:56:51
- 조회수 :
- 2,136
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
안녕하세요.
모 대규모 공공기관에서 아키텍트로 활동하고 있습니다.
요즘 전자정부표준프레임워크로 업무가 오픈되었는데 성능에서 아래 문제가
발생합니다.
웹로직11g의 DB Pool을 이용키 위해 JNDI DataSource Look up 설정을 xml에
했는데, 웹로직의 DataSource를 얻기 위해 매번 JNDI Look up을 하는 것
같네요.
즉, 사용자가 없는 밤, 주말에는 이 Look Up 속도가 빨라 응답속도도 역시
빠른데, 사용자가 많은 주중 낮 동안에는 Look Up 속도가 100ms도 넘을때가
있습니다.(웹로직 내부 경합이 있겠죠... 아마)
예전 사기업 프레임워크를 쓸 때는 DataSource JNDI Look Up 속도를 줄이고자
그 객체를 Hash에 저장토록 하여 다음에는 하지 않도록 코딩을 했습니다.
Spring Framework 기반의 전자정부 프레임워크는 코딩은 없고 xml에 정의하지만
객체 재사용 부분에서 의구심이 듭니다.
즉, JNDI Lookup 후 객체가 재사용 된다면 100ms라는 속도는 맨 처음에만
있겠죠?
혹시 context-datasource.xml jndi 설정을 해 두면 매번 lookup을 합니까?
그렇지 않다면 예전 처럼 Hash등에 저장하는 방법은 없나요?
경험이 풍부한 분들의 답변 부탁드립니다.
감사합니다.
모 대규모 공공기관에서 아키텍트로 활동하고 있습니다.
요즘 전자정부표준프레임워크로 업무가 오픈되었는데 성능에서 아래 문제가
발생합니다.
웹로직11g의 DB Pool을 이용키 위해 JNDI DataSource Look up 설정을 xml에
했는데, 웹로직의 DataSource를 얻기 위해 매번 JNDI Look up을 하는 것
같네요.
즉, 사용자가 없는 밤, 주말에는 이 Look Up 속도가 빨라 응답속도도 역시
빠른데, 사용자가 많은 주중 낮 동안에는 Look Up 속도가 100ms도 넘을때가
있습니다.(웹로직 내부 경합이 있겠죠... 아마)
예전 사기업 프레임워크를 쓸 때는 DataSource JNDI Look Up 속도를 줄이고자
그 객체를 Hash에 저장토록 하여 다음에는 하지 않도록 코딩을 했습니다.
Spring Framework 기반의 전자정부 프레임워크는 코딩은 없고 xml에 정의하지만
객체 재사용 부분에서 의구심이 듭니다.
즉, JNDI Lookup 후 객체가 재사용 된다면 100ms라는 속도는 맨 처음에만
있겠죠?
혹시 context-datasource.xml jndi 설정을 해 두면 매번 lookup을 합니까?
그렇지 않다면 예전 처럼 Hash등에 저장하는 방법은 없나요?
경험이 풍부한 분들의 답변 부탁드립니다.
감사합니다.
A
안녕하세요.. 박병국님..
Spring bean 들은 기본적으로 Singleton 방식으로 처음 Spring container가 기동되면서 초기화 되도록 되어 있습니다. (별도로 prototype 방식이나, lazy-init 설정 변경을 하지 않는 경우)
jee-lookup (JndiObjectFactoryBean)의 cache 속성도 기본적으로 true로 되어 있어서.. 매번 다시 lookup되지는 않을 것 같습니다.
(cache를 false로 한 경우.. hot redeployment를 위해.. 매번 fetch 됨)
매번 lookup된다고 판단하신 내용을 구체적으로 알려주시면.. 도움이 될 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
Spring bean 들은 기본적으로 Singleton 방식으로 처음 Spring container가 기동되면서 초기화 되도록 되어 있습니다. (별도로 prototype 방식이나, lazy-init 설정 변경을 하지 않는 경우)
jee-lookup (JndiObjectFactoryBean)의 cache 속성도 기본적으로 true로 되어 있어서.. 매번 다시 lookup되지는 않을 것 같습니다.
(cache를 false로 한 경우.. hot redeployment를 위해.. 매번 fetch 됨)
매번 lookup된다고 판단하신 내용을 구체적으로 알려주시면.. 도움이 될 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.