간헐적인 JDBC 에러 코드(-21024) 이슈

by tndus posted Sep 13, 2022


* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.

OS
Linux 64bit
CUBRID Ver.
CUBRID 9.3
CUBRID TOOL Ver.
[도움말]-[버전정보] 확인
응용 환경(API)

java-1.7

egovframework 3.1.0

springframework 3.2.9.RELEASE

cubrid-jdbc-9.3.6.0002.jar

commons-dbcp 1.9


* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.

 

에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------

 

서버 운영 중 간헐적으로 데이터 접근 불가하다는 에러가 발생합니다. 

몇 분정도 에러 페이지가 뜨다가 다시 정상 운영되는 식으로 에러가 발생합니다. 

톰캣 에러 로그는 이렇습니다. 

--------------------------------------------------------------------------------------------------------------------------------

2022-09-05 16:12:24,499 DEBUG [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] Returning handler method [public void egovframework.XX.XX.XXXX.login.web.LoginController.actionSecurityLogin(egovframework.XX.XX.XXXX.login.vo.LoginVO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.ui.ModelMap) throws java.lang.Exception]
2022-09-05 16:12:24,899 DEBUG [org.springframework.jdbc.support.SQLErrorCodesFactory] Looking up default SQLErrorCodes for DataSource [org.apache.commons.dbcp.BasicDataSource@6f2f7954]
2022-09-05 16:12:24,899 DEBUG [org.springframework.jdbc.support.SQLErrorCodesFactory] SQLErrorCodes found in cache for DataSource [org.apache.commons.dbcp.BasicDataSource@6f2f7954]
2022-09-05 16:12:24,899 DEBUG [org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator] Unable to translate SQLException with Error code '-21024', will now try the fallback translator
2022-09-05 16:12:24,899 DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFactory] Returning cached instance of singleton bean 'exceptionTransfer'
2022-09-05 16:12:24,899 DEBUG [egovframework.rte.fdl.cmmn.aspect.ExceptionTransfer] execute ExceptionTransfer.transfer 
2022-09-05 16:12:24,899 DEBUG [egovframework.rte.fdl.cmmn.aspect.ExceptionTransfer] RuntimeException case :: RuntimeException 
2022-09-05 16:12:24,900 ERROR [egovframework.XX.XX.XXXX..login.service.impl.LoginServiceImpl] 
2022-09-05 16:12:24,905 DEBUG [egovframework.rte.fdl.cmmn.exception.manager.DefaultExceptionHandleManager]  DefaultExceptionHandleManager.run() 
2022-09-05 16:12:24,905 DEBUG [egovframework.rte.fdl.cmmn.exception.manager.DefaultExceptionHandleManager] pattern = **service.impl.*, thisPackageName = egovframework.XX.XX.XXXX..login.service.impl.LoginServiceImpl.actionLogin
2022-09-05 16:12:24,905 DEBUG [egovframework.rte.fdl.cmmn.exception.manager.DefaultExceptionHandleManager] pm.match(pattern, thisPackageName) = true
2022-09-05 16:12:24,905 DEBUG [egovframework.com.cmm.EgovComExcepHndlr] [HANDLER][Exception]:::
2022-09-05 16:12:24,909 DEBUG [egovframework.rte.fdl.cmmn.exception.manager.DefaultExceptionHandleManager]  DefaultExceptionHandleManager.run() 
2022-09-05 16:12:24,909 DEBUG [egovframework.rte.fdl.cmmn.exception.manager.DefaultExceptionHandleManager] pattern = **service.impl.*, thisPackageName = egovframework.XX.XX.XXXX.login.service.impl.LoginServiceImpl.actionLogin
2022-09-05 16:12:24,909 DEBUG [egovframework.rte.fdl.cmmn.exception.manager.DefaultExceptionHandleManager] pm.match(pattern, thisPackageName) = true
2022-09-05 16:12:24,909 ERROR [egovframework.com.cmm.EgovComOthersExcepHndlr] egovframework.XX.XX.XXXX..login.service.impl.LoginServiceImpl.actionLogin
2022-09-05 16:12:24,913 DEBUG [egovframework.rte.fdl.cmmn.aspect.ExceptionTransfer] RuntimeException case :: DataAccessException 
2022-09-05 16:12:24,913 DEBUG [org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver] Resolving exception from handler [public void egovframework.XX.XX.XXXX..login.web.LoginController.actionSecurityLogin(egovframework.XX.XX.XXXX..login.vo.LoginVO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.ui.ModelMap) throws java.lang.Exception]: org.springframework.jdbc.UncategorizedSQLException: 
2022-09-05 16:12:24,947 DEBUG [org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver] Resolving exception from handler [public void egovframework.XX.XX.XXXX..login.web.LoginController.actionSecurityLogin(egovframework.XX.XX.XXXX.login.vo.LoginVO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.ui.ModelMap) throws java.lang.Exception]: org.springframework.jdbc.UncategorizedSQLException: 
2022-09-05 16:12:24,947 DEBUG [org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver] Resolving exception from handler [public void egovframework.XX.XX.XXXX.login.web.LoginController.actionSecurityLogin(egovframework.XX.XX.XXXX.login.vo.LoginVO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.ui.ModelMap) throws java.lang.Exception]: org.springframework.jdbc.UncategorizedSQLException: 
2022-09-05 16:12:24,947 DEBUG [org.springframework.web.servlet.handler.SimpleMappingExceptionResolver] Resolving exception from handler [public void egovframework.XX.XX.XXXX.login.web.LoginController.actionSecurityLogin(egovframework.XX.XX.XXXX.login.vo.LoginVO,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.ui.ModelMap) throws java.lang.Exception]: org.springframework.jdbc.UncategorizedSQLException: 
2022-09-05 16:12:24,948 DEBUG [org.springframework.web.servlet.handler.SimpleMappingExceptionResolver] Resolving to view 'cmm/error/dataAccessFailure' for exception of type [org.springframework.jdbc.UncategorizedSQLException], based on exception mapping [org.springframework.dao.DataAccessException]
2022-09-05 16:12:24,948 DEBUG [org.springframework.web.servlet.handler.SimpleMappingExceptionResolver] Exposing Exception as model attribute 'exception'
2022-09-05 16:12:24,948 DEBUG [org.springframework.web.servlet.DispatcherServlet] Handler execution resulted in exception - forwarding to resolved error view: ModelAndView: reference to view with name 'cmm/error/dataAccessFailure'; model is {exception=org.springframework.jdbc.UncategorizedSQLException: 
2022-09-05 16:12:24,952 DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFactory] Invoking afterPropertiesSet() on bean with name 'cmm/error/dataAccessFailure'
2022-09-05 16:12:24,952 DEBUG [org.springframework.beans.factory.support.DefaultListableBeanFactory] Invoking afterPropertiesSet() on bean with name 'cmm/error/dataAccessFailure'
2022-09-05 16:12:24,953 DEBUG [org.springframework.web.servlet.view.ContentNegotiatingViewResolver] Returning [org.springframework.web.servlet.view.JstlView: name 'cmm/error/dataAccessFailure'; URL [/WEB-INF/jsp/cmm/error/dataAccessFailure.jsp]] based on requested media type '*/*'
2022-09-05 16:12:24,953 DEBUG [org.springframework.web.servlet.DispatcherServlet] Rendering view [org.springframework.web.servlet.view.JstlView: name 'cmm/error/dataAccessFailure'; URL [/WEB-INF/jsp/cmm/error/dataAccessFailure.jsp]] in DispatcherServlet with name 'action'
2022-09-05 16:12:24,953 DEBUG [org.springframework.web.servlet.view.JstlView] Added model object 'exception' of type [org.springframework.jdbc.UncategorizedSQLException] to request in view with name 'cmm/error/dataAccessFailure'
2022-09-05 16:12:24,953 DEBUG [org.springframework.web.servlet.view.JstlView] Forwarding to resource [/WEB-INF/jsp/cmm/error/dataAccessFailure.jsp] in InternalResourceView 'cmm/error/dataAccessFailure'
2022-09-05 16:12:24,979 DEBUG [org.springframework.security.web.access.ExceptionTranslationFilter] Chain processed normally

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

-21024 는  Request timed out 에러라는 것과, cubrid_broker.conf 값과, application의 dbcp 설정 값을 확인해보라는 답변은 찾을 수 있었습니다.

운영 중인 서버의 설정 값을 바꿔 보기 전에 설정 값을 바꾸는 조치가 적절한지, 다른 원인이 있는지 여쭤보고 싶습니다.

 

DBMS는 두 개의 어플리케이션이 함께 사용하고 있습니다. 두 어플리케이션 모두 설정 값은 같습니다.

 

* application의 dbcp 설정 값

<property name="initialSize" value="10" />

<property name="maxIdle"     value="10" />

<property name="maxActive"   value="10" />

 

* cubrid_broker.conf 설정 값

[broker]

MASTER_SHM_ID =30001

ADMIN_LOG_FILE =log/broker/cubrid_broker.log

 

[%query_editor]

SERVICE =ON

BROKER_PORT =30000

MIN_NUM_APPL_SERVER =5

MAX_NUM_APPL_SERVER =40

APPL_SERVER_SHM_ID =30000

LOG_DIR =log/broker/sql_log

ERROR_LOG_DIR =log/broker/error_log

SQL_LOG =ON

TIME_TO_KILL =120

SESSION_TIMEOUT =300

KEEP_CONNECTION =AUTO

CCI_DEFAULT_AUTOCOMMIT =ON ACCESS_LOG=ON

 

[%BROKER1]

SERVICE =ON

BROKER_PORT =33000

MIN_NUM_APPL_SERVER =5

MAX_NUM_APPL_SERVER =40

APPL_SERVER_SHM_ID =33000

LOG_DIR =log/broker/sql_log

ERROR_LOG_DIR =log/broker/error_log

SQL_LOG =ON TIME_TO_KILL =120

SESSION_TIMEOUT =300

KEEP_CONNECTION =AUTO

CCI_DEFAULT_AUTOCOMMIT =ON

ACCESS_LOG=ON

 

감사합니다.

 


Articles

12 13 14 15 16 17 18 19 20 21