Translate

2019년 1월 16일 수요일

[인터넷] 민원24 프린트 출력 시 오류코드10001 에러 원인 및 해결방법





이슈

민원24에서 문서를 출력 시 아래와 같이 나오며 정상적으로 프린트를 할 수 없었다.

1번째 문서 출력중 에러
오류코드 : 10001
'스풀 기능을 사용하지 않고 인쇄'를 지원하지 않는 프린터에서 발생하는 문제입니다.

자세한 내용은 '민원24 홈페이지> 이용안내> 자주묻는 질문'에서 '10001'으로 검색하시면 관련 안내를 보실 수 있습니다.


1004lucifer





원인 및 해결방법

프린터 드라이버가 문제가 될수 있다는 답변.
캐논 복합기를 사용해서 아래 내용에는 없지만..
Windows10 에서 자동으로 잡아준 드라이버 보다는 제조사 홈페이지에서 정식 드라이버를 다운받아 설치를 했다.
1004lucifer




정식 프린터 드라이버 설치 후 아래와 같이 정상적으로 프린트가 가능했다.






PS.
대법원 가족관계등록시스템 사이트에서 프린트를 할 수 없는 프린터라고 나왔었는데 정식 드라이버를 설치하니 대법원사이트에서도 프린트 사용이 가능해졌다.


2019년 1월 9일 수요일

[WebLogic] v10.3.6 에서 발생하는 GC 및 OOME(Out of Memory Error) 이슈










기존구성


 - WebLogic v10.3.0
 - JDK6




구성변경


 - WebLogic 버전 변경 (v10.3.0 => v10.3.6)


1004lucifer

증상


 - WebLogic 기동 후 20~40분 정도 지난 시점에 Full GC가 발생하고 조금 더 시간이 지나 Full GC 발생 시 메모리 확보가 되지 않아 연속적으로 Full GC가 발생을 하게된다.
(거의 1,2초마다 Full GC가 발생함.)
한참 지속 후 OOME 발생




해결방법 (조치사항)


 - JDK버전 변경 (JDK6 => JDK7)
 - Heap Memory 용량 변경 (Xmx:1024m => Xmx:2048m)





분석과정

1. Request 가 들어오면서 Heap Memory를 모두 사용하자 Full GC가 너무 짧은 주기로 연속적으로 발생을 했다.


2. Java(WebLogic) Heap Memory Dump 분석
(Full GC가 발생할 당시에 Dump 생성)


 1) 힙메모리의 대부분이 세션객체로 사용됨
  - Session Timeout 시간을 짧게 줄일 필요가 있음.
  - 기본값(60분)이 너무 길어 세션객체가 GC대상에 포함되지 않음.
1004lucifer
 2) 힙메모리 용량이 너무 낮음
  - 메모리를 2G정도로 늘릴 필요가 있음.


3. 세션시간 설정 적용불가
 - web.xml, weblogic.xml 파일 수정 시 timeout 적용되지 않음. (원인 모름)
 - 힙메모리(Xmx)만 2048m 으로 수정함.


4. JDK 업그레이드 및 테스트
 1) 힙메모리 1GB 시 Full GC 발생되기까지 시간
  - JDK6: 약 20~30분 소요
  - JDK7: 약 70~80분 소요

 2) 힙메모리 2GB 시 Full GC 발생되기까지 시간
  - JDK7: 약 2시간 30~40분 소요



PS.

1. Full GC 이슈에 대한 생각
  1) Request가 많아 세션객체가 60분이 지나기전에 힙메모리를 모두 사용하는 상황이 발생하여 Full GC가 발생.
  2) 하지만 세션객체가 60분이 지나지 않았기 때문에 세션객체를 GC대상에 포함할 수는 없어 Full GC 후에도 확보되는 여분의 메모리는 거의 없음.
  3) 남은 메모리가 거의 없으니 금방 Full GC 발생.
  4) 이후부터는 연속적으로 Full GC 발생

2. 왜 WebLogic v10.3.6 에서만 문제가 발생할까
  - v10.3.0 에 비해서 WebLogic 내부적으로 많은 변화가 있으며 무거워졌다고 함.
  - v10.3.6으로 바뀌며 세션객체 1개가 가지는 데이터의 양이 늘어났을 수도 있다고 추측됨.

3. 왜 JDK7에서는 Full GC까지 시간이 오래 걸리는 것일까
  - JDK7(JVM) 에서의 메모리 관리방법이 변경된 것으로 예상
  - JDK6에서 변화된 String Intern(링크)과 비슷한 것으로 예상됨.

4. 조치방법의 이유
  - 세션 timeout 변경이 불가한 상황에서 60분 이내에 Full GC가 발생하면 안되며 Full GC가 발생하는 시점이 길면 길수록 세션객체가 GC대상에 들어가게되어 Full GC 발생 시 확보가능한 메모리의 용량이 늘어나게 되어 기존 이슈가 발생할 확률이 거의 없어진다고 생각된다.