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 层上内部服务器操作的线程。通常情况下,不会分析这些线程,因为它们不会触发性能瓶颈。