Types de threads dans ThingWorx
Les threads suivants sont généralement disponibles par défaut dans l'environnement ThingWorx. Selon votre base de données ou vos personnalisations, vous pouvez observer des types de thread supplémentaires.
https nio (Nombre de threads de 1 à plus de 1024)
Threads utilisés pour les demandes de l'utilisateur ou les charges actives REST. Toutes les requêtes externes passent initialement par les threads nio (E/S non bloquantes) avant d'être exécutées sur un type de thread différent. Vous pouvez configurer plus de 1024 threads. Dans Apache Tomcat, le nombre de threads par défaut est de 150.
WSExecutionProcessor (Nombre de threads supérieur à 1 000)
Threads utilisés pour les communications des appareils distants, par exemple, Kepware. En règle générale, seuls quelques-uns de ces threads sont actifs. 99 % du temps, ces threads sont à l'état WAITING. Ces threads sont configurés à l'aide du sous-système de traitement d'exécution WebSocket. Un goulet d'étranglement au niveau de la communication de l'appareil est identifié si tous ces threads sont occupés ou si le sous-système de traitement de l'exécution WebSocket présente une file d'attente croissante des événements.
TWEventProcessor (Nombre de threads supérieur à 16)
Threads utilisés pour exécuter le code pour l'ensemble des événements, timers et planificateurs. Lorsque ces threads sont occupés, les événements sont placés en file d'attente. Si la file d'attente s'alourdit significativement, cela peut avoir un impact sur les performances du serveur. Si tous les threads d'événement sont constamment occupés, le serveur peut cesser de répondre et peut échouer à traiter les entrées utilisateur. Ces threads sont l'un des principaux types de thread, et il est recommandé de les surveiller. Le nombre de threads actifs est configurable et peut être suivi à l'aide du sous-système de traitement des événements. Un goulet d'étranglement au niveau de l'exécution d'un événement, d'un timer ou d'un planificateur peut être identifié si tous les threads de ce type sont occupés. Dans ce cas, la valeur activeThreads dans le sous-système du processeur d'événements est constamment élevée et la file d'attente des événements ne cesse d'augmenter dans ce sous-système de ThingWorx Composer.
C3P0 (Nombre de threads de 3à 8)
Threads qui gèrent toutes les connexions à la base de données. Si les threads sont bloqués pendant de longues périodes, il en résulte des problèmes d'accès aux bases de données.
Timers ou planificateurs (nombre de threads de 30 à 40)
Threads utilisés pour surveiller et déclencher les planificateurs et les timers. L'exécution du code se produit sur les threads TWEventProcessor. Ces threads n'effectuent pas un travail de traitement important. Ils chronomètrent les événements requis pour démarrer un traitement supplémentaire.
pool (Nombre de threads supérieur à 40)
Threads utilisés pour l'écriture des propriétés persistantes, des flux et des entrées de flux de valeurs. Un timer interne déclenche ces threads et la plupart du temps les threads sont inactifs. Certains de ces threads correspondent aux sous-systèmes de traitement de flux et de flux de valeurs. Si la file d'attente de ces sous-systèmes augmente, cela traduit des problèmes de débit de la base de données. Les threads correspondants sont saturés par l'activité.
Threads asynchrones (nombre de threads de 1 à plus de 100)
La logique applicative est déclenchée sur des threads séparés lorsque les services sous-jacents sont marqués comme étant asynchrones. Le nombre de threads asynchrones peut excéder plusieurs milliers. Le nom du service qui déclenche le thread fait partie du nom du thread.
Divers threads sur JVM ou Tomcat Apache (nombre de threads supérieur à 40)
Threads utilisés pour les opérations de serveur internes au niveau de la couche Tomcat Apache. En général, ces threads ne sont pas analysés car ils ne déclenchent pas de goulets d'étranglement de performances.