ThingWorx의 스레드 유형
ThingWorx 환경에서는 기본적으로 다음 스레드를 사용할 수 있습니다. 데이터베이스 또는 사용자 정의에 따라 일부 추가 스레드 유형이 표시될 수도 있습니다.
https nio(스레드 수: 1-1024개 이상)
사용자 요청 또는 REST 페이로드에 사용되는 스레드입니다. 처음에는 모든 외부 요청이 다른 스레드 유형에서 실행되기 전에 nio(비차단 IO) 스레드를 통과합니다. 1024개 이상의 스레드를 구성할 수 있습니다. Apache Tomcat의 기본 스레드 수는 150개입니다.
WSExecutionProcessor(스레드 수: 1000개 이상)
예를 들어, Kepware 등의 원격 장치 통신에 사용되는 스레드입니다. 일반적으로 이러한 스레드 중 몇 개만 현재 실행 중입니다. 이러한 스레드는 99%의 시간 동안 대기 상태에 있습니다. 이러한 스레드는 WebSocket 실행 처리 하위 시스템을 사용하여 구성됩니다. 이러한 모든 스레드가 사용 중이거나 WebSocket 실행 처리 하위 시스템이 증가하는 이벤트 대기열을 표시하는 경우 장치 통신에서 병목 현상이 발생합니다.
TWEventProcessor(스레드 수: 16개 이상)
모든 이벤트, 타이머 및 스케줄러에 대한 코드를 실행하는 데 사용되는 스레드입니다. 이러한 스레드가 사용 중이면 이벤트가 대기열로 이동합니다. 대기열이 매우 많이 백업되면 서버 성능에 영향을 줄 수 있습니다. 모든 이벤트 스레드가 계속 사용 중이면 서버가 응답 중단을 시작하고 사용자 입력에 응답하지 못할 수 있습니다. 이러한 스레드는 주 스레드 유형 중 하나이므로 모니터링하는 것이 좋습니다. 활성 스레드의 수는 구성 가능하며 이벤트 처리 하위 시스템을 사용하여 모니터링할 수 있습니다. 이 유형의 모든 스레드가 사용 중이면 이벤트, 타이머 또는 스케줄러 실행에서 병목 현상이 발생할 수 있습니다. 이 경우 이벤트 프로세서 하위 시스템의 activeThreads는 일관되게 높고 ThingWorx Composer에서 이 하위 시스템의 이벤트 대기열이 계속 증가합니다.
C3P0(스레드 수: 3-8개)
모든 데이터베이스 연결을 관리하는 스레드입니다. 스레드가 오랫동안 차단되면 데이터베이스 액세스 문제가 발생합니다.
타이머 또는 스케줄러(스레드 수: 30-40개)
스케줄러 및 타이머를 모니터링하고 트리거하는 데 사용되는 스레드입니다. 코드 실행이 TWEventProcessor 스레드에서 발생합니다. 이러한 스레드는 중요한 처리 작업을 수행하지 않습니다. 이는 추가 처리를 시작하는 데 필요한 이벤트의 시간을 정합니다.
pool(스레드 수: 40개 이상)
지속된 속성, 스트림 및 가치 스트림 엔트리를 작성하는 데 사용되는 스레드입니다. 내부 타이머는 이러한 스레드와 스레드가 유휴 상태인 대부분의 시간을 트리거합니다. 이러한 스레드 중 일부는 스트림과 가치 스트림 처리 하위 시스템에 해당합니다. 이러한 하위 시스템의 대기열이 늘어나면 데이터베이스 처리량 문제를 나타냅니다. 해당 스레드는 활동으로 포화 상태가 됩니다.
비동기 스레드(스레드 수: 1-100개 이상)
기본 서비스가 비동기로 표시된 경우 비즈니스 논리가 별도의 스레드에서 트리거됩니다. 비동기 스레드 수는 수천 개까지 올라갈 수 있습니다. 스레드를 트리거하는 서비스 이름은 스레드 이름의 일부입니다.
다양한 JVM 또는 Tomcat Apache 스레드(스레드 수: 40개 이상)
Tomcat Apache 레이어에서 내부 서버 작업에 사용되는 스레드입니다. 일반적으로 이러한 스레드는 성능 병목 현상을 트리거하지 않기 때문에 분석되지 않습니다.