监控工具
ThingWorx Platform 采用 Java 技术开发。本部分中介绍的诊断和监控工具旨在从 Java 虚拟机 (JVM) 收集性能指标和其他数据。使用这些工具可通过 JVM 层监控您的 ThingWorx 解决方案。这些工具从 JVM 获取以下数据:
内存操作 - 检查是否已为服务器分配足够的内存资源,以及 JVM 垃圾回收 (GC) 操作所需的时间。
线程性能 - 检查是否存在任何可能在 ThingWorx 解决方案中引起性能问题的长事务处理或线程问题。
直接 JVM 监控
直接 JVM 监控工具由 Oracle 或支持子系统提供。直接从 JVM 收集数据是确定和修复性能问题的绝佳替代方案。建议您监控 ThingWorx 解决方案的以下 JVM 诊断:
使用垃圾收集日志记录 (JVM 的内置功能) 监控内存随着时间推移的性能情况。
使用支持子系统的线程级收集和分析。
监控 ThingWorx 服务器的内存使用情况
Java 虚拟机 (JVM) 在本机使用垃圾收集器 (GC) 管理自身的内存 (堆阵)。GC 用于标识和移除未使用的 Java 堆阵中的对象。您可以通过记录 GC 所收集的详细信息来监控 ThingWorx 服务器的内存使用情况。
您可以使用 GC 日志文件来标识内存消耗中的趋势。您可以根据该趋势检查是否应更改 Apache Tomcat 服务器的最大堆阵参数,以获得更好的性能。因此,建议为 Apache Tomcat 服务器上的 GC 设置日志记录。
JVM 具有在运行时调用的标志。这些标志用于写入关于 GC 事件的统计信息,例如 GC 事件的类型、事件开始时消耗的内存量、由 GC 事件释放的内存量以及 GC 事件的持续时间。
每次启动 JVM 时都会覆盖 GC 日志文件。建议您在重新启动服务器期间备份日志文件。这有助于您分析是否因内存使用情况导致服务器重新启动。
您可以使用分析工具 (例如 GCEasy.io 和 Chewiebug GC Viewer) 来分析来自垃圾收集的日志。
如何在 Linux 上设置垃圾收集日志记录 (setenv.sh)
要在 Linux 上设置垃圾收集器日志记录,请执行以下步骤:
1. 在文本编辑器中打开 $CATALINA_HOME/bin/setenv.sh 脚本。
setenv.sh 脚本文件在所有安装中均不可用。如果文件不存在,则在该位置创建一个新的 setenv.sh 文件。
2. JAVA_OPTS 变量末尾附加以下文本,并使用双引号括起。
对于 Java 8:
-XX:+UseG1GC -Xloggc:/logs/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails
如果未在 setenv.sh 文件中指定 JAVA_OPTSsetenv.sh 文件为新文件,则在文件中添加以下行:
JAVA_OPTS=”-XX:+UseG1GC -Xloggc:/logs/gc.log -XX:+PrintGCTimeStamps -XX:+PrintGCDetails”
对于 Java 9 及更高版本:
-Xlog:gc:file=/logs/gc.log:time,level,tags
如果未在 setenv.sh 文件中指定 JAVA_OPTSsetenv.sh 文件为新文件,则在文件中添加以下行:
JAVA_OPTS="-Xlog:gc:file=/logs/gc.log:time,level,tags"
请注意以下几点:
-XX:+PrintGC 选项将返回并内容较少的输出日志。例如,输出日志具有以下详细信息:
2017-10-10T13:22:49.363-0400: 3.096: [GC (Allocation Failure) 116859K->56193K(515776K), 0.0728488 secs]
-XX:+PrintGCDetails 选项将返回详细的输出日志。例如,输出日志具有以下详细信息:
2017-10-10T13:18:36.663-0400: 35.578: [GC (Allocation Failure) 2017-10-10T13:18:36.663-0400: 35.578: [ParNew: 76148K->6560K(76672K), 0.0105080 secs] 262740K->193791K(515776K), 0.0105759 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
3. setenv.sh 脚本的末尾添加以下行。在启动 Apache Tomcat 服务器之前,此代码会自动将现有 gc.out 文件备份到 gc.out.restart 中:
# Backup the gc.out file to gc.out.restart when a server is started.
if [ -e "$CATALINA_HOME/logs/gc.out" ]; then
cp -f "$CATALINA_HOME/logs/gc.out" "$CATALINA_HOME/logs/gc.out.restart"
fi
4. 保存对文件所做的更改。
5. 使用适用于您的操作系统的服务控制器重新启动 Apache Tomcat 服务。
如何在 Windows 上设置垃圾收集日志记录 (Apache 服务管理器)
要在 Windows 上设置垃圾收集器日志记录,请执行以下步骤:
1. 在 Windows 资源管理器中,浏览至 <Tomcat_home>\bin
2. 启动名称中包含 w 的可执行文件。例如,Tomcat<version number>w.exe
3. 单击 Java 选项卡。
4. “Java 选项”字段中,添加以下行:
对于 Java 8:
-Xloggc:logs/gc_%t.out
-XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps
-XX:+PrintGCDetails
对于 Java 9 及更高版本:
-Xlog:gc:file=/logs/gc.log:time,level,tags
有关 -XX:+PrintGC-XX:+PrintGCDetails 选项之间的信息,请参阅如何在 Linux (Setenv.sh) 上设置垃圾收集日志记录一节。
5. 单击“应用”以保存对服务配置所做的更改。
6. “常规”选项卡中,单击“停止”
7. 单击“启动”以重新启动 Apache Tomcat 服务。
新的垃圾收集日志会写入 %CATALINA_HOME%\logs\gc_<Tomcat_Restart_Timestamp>.out 文件。
使用支持子系统收集诊断数据
有关信息,请参阅支持子系统
VisualVM 和其他 JMX 监控工具
VisualVM 是用于为 Java 解决方案收集数据的监控工具。您可以使用 VisualVM 来监控 ThingWorx 解决方案。此工具会收集有关内存和 CPU 使用情况的信息。此外,还会生成和分析堆阵转储并追踪内存漏失问题。您可以收集本地运行或在远程计算机上运行的解决方案的数据。
VisualVM 可提供一个界面,使您能够以图形方式查看有关 Java 解决方案的信息。
VisualVM 会与 Java JDK 一同使用。有关 VisualVM 连接设置的详细信息,请参阅 ThingWorx 帮助中心中的 (《Apache Tomcat Java 》)Apache Tomcat Java 选项设置部分。
使用 Java 管理扩展 (JMX) 与 JVM 集成的其他工具也会提供类似的监控功能。
VisualVM 会捕获可影响解决方案性能的以下关键指标:
JVM 内存性能
执行线程所需的时间
操作系统的内存以及 CPU 指标
数据库连接池监控
VisualVM 会追踪大约 20 分钟以内的实时数据。
ThingWorx 应用程序日志监控
ThingWorx 解决方案日志应定期进行监控,以了解错误或其他异常操作。错误可出现在平台层或与 ThingWorx 一同使用的自定义脚本中。建议您每天对错误日志中的消息进行审阅。
配置用于写入错误堆栈追踪的 LoggingSubsystem 选项
LoggingSubsystem 中的“启用堆栈追踪”选项会将错误消息和关联的堆栈追踪写入日志文件。默认情况下,未将 LoggingSubsytem 配置为将堆栈追踪 (调用堆栈) 写入磁盘。将“启用堆栈追踪”选项设置为可将异常和错误消息的调用堆栈写入 ThingworxStorage/logs 文件夹中的文件 ErrorLog.log。建议在调试错误时将此选项设置为包含堆栈追踪中的函数调用详细信息。
保留应用程序日志
日志级别可确定应在日志中显示的细节数量。除非您正在对问题进行故障排除,否则建议将解决方案的日志级别保持在最小详细级别,例如“信息”“警告”。将日志详细级别增加至“调试”“追踪”“全部”时,请务必小心。这会对 ThingWorx 的性能产生负面影响。如果 ThingWorx Platform 上的可用资源不足,则可能会导致解决方案出现不可预见的行为。
日志将作为单独的文件保存在服务器上的 /ThingworxStorage/logs 文件夹中。日志将存档至 logs 文件夹内的 archives 文件夹中。日志轮替规则将以文件大小以及日志记录子系统的“日志保留设置”中设置的时间配置为基础。这些设置可在运行时进行更改和应用。
您可以在“系统” > “子系统” > LoggingSubsystem > “配置”中指定下列滚动更新配置:
文件大小 - 当日志文件的大小达到或超过“文件大小上限 (KB)”字段中定义的大小时,将对其进行存档。日志的默认文件大小设置为 100000 KB。可设置的最大文件大小为 1000000 KB。
时间 - 当触发日志事件时,文件将在每天午夜滚动更新。这些日志将移动到 archives 文件夹中。默认情况下,如果日志在 archives 文件夹中超过七天,则会被删除。默认值可在“存档最大天数”字段中更改。您可以指定 1 至 90 天。
监视日志大小至关重要。通过首先备份文件或在包含过时信息时放弃这些文件,以一致的方式清除日志文件。
这对您有帮助吗?