MySQL + INNODB 를 사용하는 시스템의 경우 위와 같은 에러를 만날 수 있다.
MySQL은 트랜젝션을 사용할 시 Table Lock(테이블 전체를 잠그고 사용)을 걸고 트랜젝션에 돌입하게 되는데 이때에 다른 쿼리는 이 테이블에 접근 할 수 없다.
하지만 해당 쿼리가 느려지거나 교착상태(Dead Lock)에 빠지게 되면 관련된 다른 쿼리들은 모두 대기하게 되는데 어때에 타임아웃 시간이 짧을 경우 Lock wait timeout exceeded 에러가 발생한다.
이때에 MySQL 설정의 innodb_lock_wait_timeout 의 값을 수정하여 이 문제를 해결할 수 있다.
디폴트는 50초이다. 무리하게 작게 설정되어있거나 오래걸리는 쿼리가 부득이 하게 필요할 경우 적당히 큰 값을 정해주면 되겠다.
Category Archives: 허접프로그래머
Tomcat 무분별하게 catalina.out 크기 커지는것 막기
Tomcat의 로그를 보다보니 날짜별로 로그 파일을 나누어 쌓고 있음과 동시에 catalina.out이라는 파일에도 중복하여 로그를 쌓는것을 알수 있다.
이 파일은 끝없이 커지는데 관리상 좋지 못한것은 자명한 일이다. 이 문제를 해결하기 위해 catalina.sh 파일을 수정한다.
start 부분을 찾아 다음과 같이 수정하자.
[code]elif [ “$1” = “start” ] ; then
shift
# touch “$CATALINA_BASE”/logs/catalina.out
if [ “$1” = “-security” ] ; then
echo “Using Security Manager”
shift
“$_RUNJAVA” $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs=”$JAVA_ENDORSED_DIRS” -classpath “$CLASSPATH” \
-Djava.security.manager \
-Djava.security.policy==”$CATALINA_BASE”/conf/catalina.policy \
-Dcatalina.base=”$CATALINA_BASE” \
-Dcatalina.home=”$CATALINA_HOME” \
-Djava.io.tmpdir=”$CATALINA_TMPDIR” \
org.apache.catalina.startup.Bootstrap “$@” start \
>> /dev/null 2>&1 &
# >> “$CATALINA_BASE”/logs/catalina.out 2>&1 &
if [ ! -z “$CATALINA_PID” ]; then
echo $! > $CATALINA_PID
fi
else
“$_RUNJAVA” $JAVA_OPTS $CATALINA_OPTS \
-Djava.endorsed.dirs=”$JAVA_ENDORSED_DIRS” -classpath “$CLASSPATH” \
-Dcatalina.base=”$CATALINA_BASE” \
-Dcatalina.home=”$CATALINA_HOME” \
-Djava.io.tmpdir=”$CATALINA_TMPDIR” \
org.apache.catalina.startup.Bootstrap “$@” start \
>> /dev/null 2>&1 &
# >> “$CATALINA_BASE”/logs/catalina.out 2>&1 &
if [ ! -z “$CATALINA_PID” ]; then
echo $! > $CATALINA_PID
fi
fi[/code]
* 추가 – 더 편한 방법
언제 부터인가 위의 설정이 >> “$CATALINA_OUT” 2>&1 &와 같이 바뀌었습니다.
/etc/profile에 다음을 추가하셔도 한방에 해결됩니다.
[code]export CATALINA_OUT=”/dev/null”[/code]