com.ibatis.common.beans.ClassInfo 버그? 관련문의 드립니다.(재문의)
- 작성자 :
- 강*우
- 작성일 :
- 2018-06-26 10:54:02
- 조회수 :
- 1,663
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
안녕하세요. 첨 보는 ibatis 관련 에러로그가 발생되어 문의드립니다.(재 문의)
at java.util.Collections$SynchronizedMap.get(Collection.java:1979) - locked [0xffffffff310dde40] (a java.util.Collections$SynchronizedMap)
at com.ibatis.common.beans.ClassInfo.getInstance(ClassInfo.java:495) - locked [0xffffffff200b6c20] (a java.lang.Class)
... 생략
어제 위 오류메시지로 인해 문의드려서 답변 잘받았습니다. 감사합니다.
답변을 참고하여 서버설정쪽을 알아봐서 Jeus 측에 로그를 보내 문의해본결과 아래와 같은 답변이 와서 재 확인부탁드립니다.ㅜㅜ
jeus답변내용 :
실제로 첨부된 덤프를 확인해도 대다수의 작업 쓰레드가 "com.ibatis.common.beans.ClassInfo.getInstance"에서 모니터 락을 기다리고 있으며, 쓰레드가 실제로 완전히 Hang에 걸린 것은 아니고, 모니터 락을 잡은 뒤 다시 Runnable 상태가 됩니다.
즉, 같은 lock을 잡기 위해 대다수의 쓰레드가 접근하면서 병목 현상이 걸린 것이 맞습니다.
함께 전달해주신 링크도 이중락으로 인해 병목현상이 일어나는 사항에 대한 내용이므로 좋은 뒷받침 근거가 되는 것 같습니다.
다수의 쓰레드들이 모니터 락을 잡기 위해 "waiting" 상태에서 대기하다가 곧, "Runnable" 상태로 전환되는 것을 통해 병목현상임이 명확하고, 이 병목현상을 일으키는 모니터 락 객체가 ibatis 객체임을 확인할 수 있었습니다.
- 참고사이트 : http://www.mimul.com/pebble/default/2009/05/07/1241696100000.html
Jeus 에서 위와같은 답변을 통해 설정문제가 아닌 com.ibatis.common.beans.ClassInfo 문제로 답변이와서 재 문의드립니다.
고객사에서 jeus에 답변을 위와같이 왔으니 다시 문의하라고 요청이 와서 재문의 드립니다.
바쁘시더라도 다시한번 확인하여 답변 부탁드립니다.ㅠㅠ
좋은하루되세요.~
at java.util.Collections$SynchronizedMap.get(Collection.java:1979) - locked [0xffffffff310dde40] (a java.util.Collections$SynchronizedMap)
at com.ibatis.common.beans.ClassInfo.getInstance(ClassInfo.java:495) - locked [0xffffffff200b6c20] (a java.lang.Class)
... 생략
어제 위 오류메시지로 인해 문의드려서 답변 잘받았습니다. 감사합니다.
답변을 참고하여 서버설정쪽을 알아봐서 Jeus 측에 로그를 보내 문의해본결과 아래와 같은 답변이 와서 재 확인부탁드립니다.ㅜㅜ
jeus답변내용 :
실제로 첨부된 덤프를 확인해도 대다수의 작업 쓰레드가 "com.ibatis.common.beans.ClassInfo.getInstance"에서 모니터 락을 기다리고 있으며, 쓰레드가 실제로 완전히 Hang에 걸린 것은 아니고, 모니터 락을 잡은 뒤 다시 Runnable 상태가 됩니다.
즉, 같은 lock을 잡기 위해 대다수의 쓰레드가 접근하면서 병목 현상이 걸린 것이 맞습니다.
함께 전달해주신 링크도 이중락으로 인해 병목현상이 일어나는 사항에 대한 내용이므로 좋은 뒷받침 근거가 되는 것 같습니다.
다수의 쓰레드들이 모니터 락을 잡기 위해 "waiting" 상태에서 대기하다가 곧, "Runnable" 상태로 전환되는 것을 통해 병목현상임이 명확하고, 이 병목현상을 일으키는 모니터 락 객체가 ibatis 객체임을 확인할 수 있었습니다.
- 참고사이트 : http://www.mimul.com/pebble/default/2009/05/07/1241696100000.html
Jeus 에서 위와같은 답변을 통해 설정문제가 아닌 com.ibatis.common.beans.ClassInfo 문제로 답변이와서 재 문의드립니다.
고객사에서 jeus에 답변을 위와같이 왔으니 다시 문의하라고 요청이 와서 재문의 드립니다.
바쁘시더라도 다시한번 확인하여 답변 부탁드립니다.ㅠㅠ
좋은하루되세요.~
A
안녕하세요.
표준프레임워크 센터 입니다.
관련하여 추가로 확인하여 내용을 전달 드립니다.
아파치 재단 사이트에 보니 관련 내용이 존재 했습니다.
https://issues.apache.org/jira/browse/IBATIS-508?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel&focusedCommentId=12683961
cacheEnabled = true.
설정을 하는 경우
트래픽이 많이 걸리는 조건에서 lock 관련 문제가 발생하는것으로 되어 있습니다.
원인은 CLASS_INFO_MAP Thread Safe로 처리가 될수 있는 것인데
여기서 다시 synchronized 구문이 추가 되었기 때문입니다.
cacheEnabled = true.로 설정하는 경우
ClassInfo.class를 수정하여 재배포 하셔야 할 사항입니다.
- synchronized (clazz) {
- ClassInfo cached = (ClassInfo) CLASS_INFO_MAP.get(clazz);
- if (cached == null) {
- cached = new ClassInfo(clazz);
- CLASS_INFO_MAP.put(clazz, cached);
- }
- return cached;
+ ClassInfo cached = (ClassInfo) CLASS_INFO_MAP.get(clazz);
+ if (cached == null) {
+ cached = new ClassInfo(clazz);
+ CLASS_INFO_MAP.put(clazz, cached);
}
+ return cached;
해당 문서에 보면 다음과 같이 가이드 되어 있습니다.
검토및 테스트가 진행되어야 할 사안으로 보입니다.
참고하셔서 조치가 필요한 사항입니다.
감사합니다.
표준프레임워크 센터 입니다.
관련하여 추가로 확인하여 내용을 전달 드립니다.
아파치 재단 사이트에 보니 관련 내용이 존재 했습니다.
https://issues.apache.org/jira/browse/IBATIS-508?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel&focusedCommentId=12683961
cacheEnabled = true.
설정을 하는 경우
트래픽이 많이 걸리는 조건에서 lock 관련 문제가 발생하는것으로 되어 있습니다.
원인은 CLASS_INFO_MAP Thread Safe로 처리가 될수 있는 것인데
여기서 다시 synchronized 구문이 추가 되었기 때문입니다.
cacheEnabled = true.로 설정하는 경우
ClassInfo.class를 수정하여 재배포 하셔야 할 사항입니다.
- synchronized (clazz) {
- ClassInfo cached = (ClassInfo) CLASS_INFO_MAP.get(clazz);
- if (cached == null) {
- cached = new ClassInfo(clazz);
- CLASS_INFO_MAP.put(clazz, cached);
- }
- return cached;
+ ClassInfo cached = (ClassInfo) CLASS_INFO_MAP.get(clazz);
+ if (cached == null) {
+ cached = new ClassInfo(clazz);
+ CLASS_INFO_MAP.put(clazz, cached);
}
+ return cached;
해당 문서에 보면 다음과 같이 가이드 되어 있습니다.
검토및 테스트가 진행되어야 할 사안으로 보입니다.
참고하셔서 조치가 필요한 사항입니다.
감사합니다.