log4j:ERROR JDBCAppender::flush_buffer(), :
java.sql.SQLException: Communications link failure during commit(). Transaction resolution unknown.
        at com.mysql.jdbc.Connection.commit(Connection.java:2155)
        at org.apache.log4j.jdbcplus.JDBCLogger.freeConnection(JDBCLogger.java:455)
        at org.apache.log4j.jdbcplus.JDBCLogger.append(JDBCLogger.java:758)
        at org.apache.log4j.jdbcplus.JDBCAppender.flush_buffer(JDBCAppender.java:847)
        at org.apache.log4j.jdbcplus.JDBCAppender.append(JDBCAppender.java:827)
        at org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:221)
        at org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:57)
        at org.apache.log4j.Category.callAppenders(Category.java:194)
        at org.apache.log4j.Category.forcedLog(Category.java:379)
        at org.apache.log4j.Category.log(Category.java:844)
        at org.apache.commons.logging.impl.Log4JLogger.error(Log4JLogger.java:193)
        at org.quartz.core.JobRunShell.run(JobRunShell.java:204)
        at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)

 

이런 에러가 나왔다. log4j에서 로그를 쌓다가 에러가 이렇게 나왔다. 소스를 보아하니..

아래와 같이 나온다..

 

 

 

 } catch (SQLException sqlException) {
- if (SQLError.SQL_STATE_COMMUNICATION_LINK_FAILURE
- .equals(sqlException.getSQLState())) {
- throw SQLError.createSQLException(
- "Communications link failure during commit(). Transaction resolution unknown.",
- SQLError.SQL_STATE_TRANSACTION_RESOLUTION_UNKNOWN);
- }
-
- throw sqlException;
- } finally {

 

 

SQLError.SQL_STATE_COMMUNICATION_LINK_FAILURE

이것인가 본데..

 

mysql이 빡빡한 쿼리로 쌓여 있어서 소켓이 깨지거 같다.

log4j에서 case by case로 넣는 부분을 AsyncAppender로 변경

그리고, logDB에서 시간이 걸리지 않도록 테이블 튜닝을 했다..

 

그 이후, 문제가 발생되지 않고 있다..

 

Posted by '김용환'
,