Tipi di thread in ThingWorx
Di seguito sono elencati i thread generalmente disponibili per default nell'ambiente ThingWorx. A seconda del database o delle personalizzazioni, è possibile che vengano visualizzati alcuni tipi di thread aggiuntivi.
https nio (numero di thread: 1-1024 e oltre)
Thread utilizzati per le richieste utente o per i payload REST. Tutte le richieste esterne passano inizialmente attraverso i thread nio (IO non a blocchi) prima dell'esecuzione su un tipo di thread diverso. È possibile configurare più di 1024 thread. In Apache Tomcat il numero di thread di default è 150.
WSExecutionProcessor (numero di thread: 1000 e oltre)
I thread utilizzati per le comunicazioni di dispositivi remoti, ad esempio Kepware. In genere solo alcuni di questi thread sono attivamente in esecuzione, per il 99% del tempo restano in stato di attesa. Questi thread vengono configurati utilizzando il sottosistema di elaborazione esecuzione WebSocket. Se tutti questi thread sono occupati o se il sottosistema di elaborazione esecuzione WebSocket mostra una coda crescente di eventi, viene identificato un collo di bottiglia nella comunicazione dei dispositivi.
TWEventProcessor (numero di thread: 16 e oltre)
Thread utilizzati per eseguire il codice per tutti gli eventi, i timer e gli scheduler. Quando questi thread sono occupati, gli eventi vengono inseriti in una coda. Se la coda esegue backup in modo intensivo, si potrebbe registrare una riduzione delle prestazioni del server. Se tutti i thread dell'evento sono costantemente occupati, il server potrebbe iniziare a non rispondere all'input dell'utente. Questi thread fanno parte di uno dei tipi principali, pertanto si consiglia di monitorarli. Il numero di thread attivi è configurabile e può essere monitorato utilizzando il sottosistema di elaborazione eventi. Se tutti i thread di questo tipo sono occupati, si può identificare un collo di bottiglia nell'esecuzione di eventi, timer o scheduler. In questo caso activeThreads nel sottosistema del processore eventi è costantemente elevato e in questo sottosistema in ThingWorx Composer è presente una coda crescente di eventi.
C3P0 (numero di thread: 3-8)
Thread che gestiscono tutte le connessioni di database. Se i thread sono bloccati per lunghi periodi, si verificano problemi di accesso al database.
Timer o scheduler (numero di thread 30-40)
Thread utilizzati per monitorare e attivare scheduler e timer. Sui thread TWEventProcessor si verifica l'esecuzione del codice. Questi thread non eseguono operazioni di elaborazione significative. Cronometrano gli eventi necessari per avviare elaborazione aggiuntiva.
pool (numero di thread: 40 e oltre)
Thread utilizzati per la scrittura di proprietà persistenti, voci di stream e di stream di valori. Un timer interno attiva questi thread, che restano inattivi per la maggior parte del tempo. Alcuni di questi thread corrispondono ai sottosistemi di elaborazione stream e stream di valori. Se la coda in questi sottosistemi aumenta, significa che sono presenti problemi di throughput del database. I thread corrispondenti sono sovraccarichi di attività.
Thread asincroni (numero di thread: 1-100 e oltre)
Se i servizi sottostanti sono contrassegnati come asincroni, la logica aziendale viene attivata su thread separati. Il numero di thread asincroni può arrivare fino a diverse migliaia. Il nome del servizio che attiva il thread è una parte del nome del thread stesso.
Vari thread JVM o Tomcat Apache (numero di thread: 40 e oltre)
Thread utilizzati per le operazioni interne del server a livello di Tomcat Apache. In genere questi thread non vengono analizzati, in quanto non generano colli di bottiglia delle prestazioni.