eGovFrame 표준프레임워크 포털

메뉴 건너띄기
상단메뉴 바로가기
본문 바로가기

이 누리집은 대한민국 공식 전자정부 누리집입니다.

본문 영역

적용 지원, FAQ, Q&A 게시판을 통해 기술 문제 해결을 지원합니다.

묻고 답하기

Connection is closed, Lock wait timeout exceeded 에러건입니다.
  • 작성자

    김*정

  • 작성일

    2022-12-02 07:29:11

  • 조회수

    1,159

  • 구분

    개발환경 / 3.10

  • 진행상태

    완료

질문

교육 및 상담 신청 받는 사이트입니다. 평소에 수시로 아래 2가지 정도의 error가 반복적으로 나오면서 서비스가 멈추는 현상이 나타나고 있습니다.
어제도 서비스가 안되서 디비 프로세스 확인하니 81개 중 10개 이상이 락이 걸려있었어 톰캣, 디비 재구동 했고 10분 후에는 프로세스가 10개 정도 밖에 안되는데 Connection is closed로 서비스가 또 안되고 있었어요.
경험이 많지 않아서 이런 저런 설정을 잘못 이해하고 있는 것 같습니다.
아래는 로그와 설정 부분인데 보시고 어느 부분을 더 확인해야 하고 변경해야 하는지 조언 부탁 드립니다.

에러 1 ) Error updating database. Cause: java.sql.SQLNonTransientConnectionException: (conn=323) Connection is closed ~
에러 2 ) Cause: java.sql.SQLException: (conn=326) Lock wait timeout exceeded; try restarting transaction
; uncategorized SQLException for SQL []; SQL state [HY000]; error code [1205]; (conn=326) Lock wait timeout exceeded; try restarting transaction; nested exception is java.sql.SQLException: (conn=326) Lock wait timeout exceeded; try restarting transaction ~

mariadb my.cnf
[mysqld]
max_connections = 200
wait_timeout = 200

pom.xml
~<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-dbcp2</artifactId>
<version>2.4.0</version>
</dependency>
~<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.0.7</version>
</dependency>

context-datasource.xml
<!-- MariaDB -->
<beans profile="maria">
<bean id="dataSource-maria" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
~
<property name="maxTotal" value="200"/>
<property name="maxIdle" value="100"/>
<property name="minIdle" value="10"/>
<property name="initialSize" value="10"/>
<property name="maxWaitMillis" value="5000"/>
<property name="validationQuery" value="SELECT 1"/>
<property name="testWhileIdle" value="true"/>
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="false"/>
<property name="timeBetweenEvictionRunsMillis" value="60000"/>
</bean>
</beans>

환경정보
    - OS 정보 : CentOS Linux release 7.9.209
    - 표준프레임워크 버전 : 3.10
    - JDK(JRE) 정보 : 1.8
    - WAS 정보 : Tomcat 9.0
    - DB 정보 : Mariadb 10.6.5
    - 기타 환경 정보 : CPU : 4Core / RAM : 4G / SSD : 200G
첨부파일
답변

안녕하세요.
표준프레임워크센터입니다.

데이터베이스 커넥션이 끊어지는 이유는
서비스의 상태에 따라 여러가지가 있을 수 있으므로
정확한 답변을 드리기 어렵습니다.

우선, 커넥션이 종료되지 않고 있는 로직이 있는지 확인하고
수행중인 쿼리 중 수행시간이 오래걸리는게 있으면
해당 쿼리를 튜닝하거나 타임아웃 시간을 변경하여 보시기 바랍니다.

감사합니다.
 

이 페이지의 구성

묻고 답하기