기술 문서 - CS247546

Windchill에서 스레드 안전 문제를 처리하는 방법

수정한 날짜: 28-Mar-2025   


참고: 이 문서는 사용자의 편의를 위해 기계 번역 소프트웨어를 사용하여 번역되었습니다. PTC는 이 번역본에 포함된 내용의 신뢰성이나 가독성에 대해 어떠한 보증도 하지 않는다는 점에 유의하시기 바랍니다. 이 문서의 영문 원본 버전을 보려면 여기 클릭하십시오. 기계 번역에 대한 자세한 내용을 보려면 여기 를클릭하십시오.
알려주셔서 감사합니다. 최대한 빠른 시일 내에 번역을 검토하겠습니다.

적용 대상

  • Windchill PDMLink 6.2 to 12.1

설명

  • 스레드 안전 문제(동시성 문제 또는 경쟁 조건이라고도 함)란 무엇입니까?
  • Windchill 시스템에서 높고 지속적인 CPU 사용량이 관찰되었습니다.
  • 하나 이상의 스레드가 스레드 안전하지 않은 객체(예: HashMap)에 액세스하는 동안 끝없이 100% CPU를 사용하는 것으로 관찰되었습니다.
  • Windchill에서 캡처한 스레드 덤프를 살펴보면 아래 규칙에 따라 중단된 스레드를 찾을 수 있습니다.
    • 스택 추적은 코드가 현재 스레드 안전하지 않은 개체(예: HashMap, HashSet, ArrayList)에 액세스하고 있음을 보여줍니다.
    • CPU 사용자 시간은 마지막 상태 이후 소요된 시간만큼 증가합니다(예: 이 양의 CPU 리소스를 사용할 수 없는 경우 1개 CPU의 100% 이하).
    • 바이트 할당 값은 시간이 지남에 따라 변화하지 않습니다.
    • 작업이 완료되지 않습니다
  • 아래는 2개의 후속 스레드 덤프 캡처를 통해 볼 수 있는 문제의 일반적인 발생에 대한 진화를 보여주는 예입니다.
    • HashMap.getEntry에서 문제가 있는 스레드를 보여주는 첫 번째 스레드 덤프의 추출물:
"ajp-bio-8011-exec-6" ID=129 데몬 prio=5 실행 가능
차단됨(cnt): 35714; 대기됨(cnt): 32780
CPU nanos: 256245725053586; 사용자 nanos: 254639820000000; 할당된 바이트: 558960941120
서블릿 요청: 10gd6vh;ihca5tzc;16546;ov2qsw;3024310; 메서드 컨텍스트: 10gd6vh;ihca5tzc;16546;ov2qsw;3024313
java.util.HashMap.getEntry(HashMap.java:469)에서
java.util.HashMap.containsKey(HashMap.java:453)에서
com.ptc.wvs.server.loader.PartGenericStructure.getNextSiblingNumber(PartGenericStructure.java:2138)에서
  • HashMap.getEntry에 대한 호출에서 여전히 문제가 있는 스레드를 보여주는 2번째 스레드 덤프의 추출물. CPU nanos/User nanos만 증가하는 것을 관찰합니다. 할당된 Byte에는 변화가 없습니다. 100% CPU를 사용하므로 일반적으로 두 스레드 덤프 사이에 경과된 시간만큼 시간이 증가합니다.
"ajp-bio-8011-exec-6" ID=129 데몬 prio=5 실행 가능
차단됨(cnt): 35714; 대기됨(cnt): 32780
CPU nanos: 256257725053586; 사용자 nanos: 254651820000000; 할당된 바이트: 558960941120
서블릿 요청: 10gd6vh;ihca5tzc;16546;ov2qsw;3024310; 메서드 컨텍스트: 10gd6vh;ihca5tzc;16546;ov2qsw;3024313
java.util.HashMap.getEntry(HashMap.java:469)에서
java.util.HashMap.containsKey(HashMap.java:453)에서
com.ptc.wvs.server.loader.PartGenericStructure.getNextSiblingNumber(PartGenericStructure.java:2138)에서
이는 기술 문서 247546의 PDF 버전이며, 구 버전일 수 있습니다. 최신 버전 CS247546