티스토리 뷰

③ 미들웨어/ⓙ JEUS

[JEUS] DB 누수 확인 방법

와스프로 GodNR 2018. 8. 12. 14:41
728x90
SMALL

 포스팅은 JEUS DB누수 확인방법에 대해 알아보도록 하겠습니다.


JEUS의 DATASOURCE를 사용 시 기존 invocation-manager-action으로 Connection 반납을 하지 않은 요청에 대해서 파악을 했으나, JEUS 6.0.0.7 이후 버전에서 제공된 설정으로 DB Pool을 반납하지 않은 code 까지 확인이 가능합니다.

Application에서 정상적으로 Connection를 반환하지 않을때 확인할수 있는 방법에 대하여 기술하였습니다.


1. JEUS DB 누수 확인 방법
    a. container 별로 설정 invocation-manager-action

 

<node>
<engine-container>

<invocation-manager-action>WARNING, AutoClose</invocation-manager-action>

<resource>
WARNING : URL 만 로그 기록
AutoClose: closed 안 된 DB connection 반납

[설정내용]

 

b. JEUS 로그

[2013.01.13 15:40:21][1][b288] [container1-57] [MGR-0396] resources not closed :
JeusConnection@1c0bec5[PHY_ID=datasource2-1,actual=oracle.jdbc.driver.OracleConnection@12c9e5d]
Thread in use : http1-w04 [container1-57]
RequestURI : /test/dbtest.jsp
jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:222)
jeus.servlet.engine.WebtobRequestProcessor.run(WebtobRequestProcessor.java:252)

[로그 내용]

 

 [2013.01.13 15:40:21][1][b288] [container1-57] [MGR-0396] resources not closed :
JeusConnection@1c0bec5[PHY_ID=datasource2-1,actual=oracle.jdbc.driver.OracleConnection@12c9e5d]
Thread in use : http1-w04 [container1-57]
RequestURI : /test/dbtest.jsp
jeus.servlet.jsp.JspServletWrapper.execute(JspServletWrapper.java:222)
jeus.servlet.engine.WebtobRequestProcessor.run(WebtobRequestProcessor.java:252)
[2013.01.13 15:40:21][2][b288] [container1-57]
[MGR-0410] do auto-close on resource
[JeusConnection@1c0bec5[PHY_ID=datasource2-1,actual=oracle.jdbc.driver.OracleConnection@12c9e5d]]

[jeus 6.0.0.8 기준 AutoClosed 로그]

 

c. DATASOURCE 별로 설정 (로그는 동일)
 

<resource>
    <data-source>
        <database>
            <action-on-connection-leak>WARNING, AutoClose</action-on-connection-leak>
            … 생략

 


2. code 확인 방법 (6.0.0.7 이후 버전 설정 가능)
    a. 설정 (invocation-manager-action or action-on-connection-leak WARNING 설정, DEFAULT이므로 설정 필요 없음)

 

<resource>
    <data-source>
        <database>
            <connection-pool>
                <connection-trace>
                    <enabled>true</enabled>
                </connection-trace>

            </connection-pool>

 

[2013.01.13 15:49:52][1][b288] [container1-57] [MGR-0396] resources not closed :
JeusConnection@1ee4dbe[PHY_ID=datasource2-1,actual=oracle.jdbc.driver.OracleConnection@3212a8]
Thread in use : http1-w04 [container1-57]
jeus_jspwork._600_dbtest_5fjsp._jspService(_600_dbtest_5fjsp.java:75) // 누수가 생긴 code line
jeus.servlet.jsp2.runtime.HttpJspBase.service(HttpJspBase.java:106)
javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
jeus.servlet.jsp.JspServletWrapper.executeServlet(JspServletWrapper.java:171)
jeus.servlet.servlets.JspServlet.execute(JspServlet.java:366)
jeus.servlet.engine.HttpRequestProcessor.run(HttpRequestProcessor.java:278)
RequestURI : /test/dbtest.jsp
[2013.01.13 15:49:52][2][b288] [container1-57] [MGR-0410] do auto-close on
resource[JeusConnection@1ee4dbe[PHY_ID=datasource2-1,actual=oracle.jdbc.driver.OracleConnection@3212a8]]

[jeus 6.0.0.8 기준 AutoClosed 로그]

 

3. 비고
    a. Resourced are not closed log 생략방법 (6.0.0.8 버전 테스트결과)
 

<node>
    <name>suntest</name>
        <engine-container>
            <name>container1</name>
                <command-option>
                    -Djeus.jdbc.connection.leak.log.level=OFF
                    -Djeus.service.resourceleak.log.level=OFF

 [JEUS 설정]

[2013.01.13 16:41:43][2][b288] [container1-60] [MGR-0410] do auto-close on
resource[JeusConnection@b1656f[PHY_ID=datasource2-1,actual=oracle.jdbc.driver.OracleConnection@7a6c34]]
[2013.01.13 16:41:43][2][b288] [container1-60] [MGR-0410] do auto-close on
resource[JeusConnection@11563a2[PHY_ID=datasource2-2,actual=oracle.jdbc.driver.OracleConnection@1404c51]]
[2013.01.13 16:41:43][2][b288] [container1-60] [MGR-0410] do auto-close on
resource[JeusConnection@12a6e85[PHY_ID=datasource2-3,actual=oracle.jdbc.driver.OracleConnection@bdfa0e]]

[로그 내용]


위와 같은 방법으로 DB ConnectionPool 누수 발생 시 대비할 수 있도록 해야겠습니다.

고맙습니다.

728x90
LIST

'③ 미들웨어 > ⓙ JEUS' 카테고리의 다른 글

Timeout 테스트 [JEUS 편]  (0) 2018.08.23
[JEUS6] EJB Clustering  (0) 2018.08.17
[JEUS] DB 누수 확인 방법  (0) 2018.08.12
[JEUS7] JPA Deploy 가이드  (0) 2018.08.11
JEUS-WebtoB 구간암호화 설정(SSL통신)  (0) 2018.08.05
[JEUS7] javamelody 사용 가이드  (0) 2018.08.05
댓글
댓글쓰기 폼