* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
Linux 64bit |
|
CUBRID 9.3 |
|
[도움말]-[버전정보] 확인 |
|
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
감사합니다.
큐브리드를 이용해 주셔서 감사합니다.
WAS에서 설정 한 connection pool 개수가 DB에 설정 한 CAS 개수보다 커서 발생 한 현상일 수 있습니다.
DB에는 접속 할 connection이 모두 소진되었고, 추가적으로 connection을 맺을려고 요청하고 대기하다가 에러가 나는 현상 일 수 있습니다.
$> vi $CUBRID/conf/cubrid.conf
...
max_clients=100 <-- 변경 ( 아래 MAX_NUM_APPL_SERVER의 합계 + 10 으로 설정 )
..
cubrid server restart DB명
max_clients의 자세한 내용은 아래 링크의 메뉴얼의 참고하세요.
https://www.cubrid.org/manual/ko/9.3.0/admin/config.html#connection-parameters
$> vi $CUBRID/conf/cubrid_broker.conf
[%query_editor]
...
BROKER_PORT = 30000
...
MAX_NUM_APPL_SERVER = 40 <-- connection pool 개수보다 크게 변경
...
[%BROKER1]
...
BROKER_PORT = 33000
...
MAX_NUM_APPL_SERVER = 40 <-- connection pool 개수보다 크게 변경
...
$> cubrid broker restart