ArcGIS GeoEvent Server 配置文件 (ArcGISGeoEvent.cfg) 用于存储 GeoEvent Server 的启动配置。 在大多数情况下,不应修改此文件中的条目。 在某些情况下,可能需要修改配置文件,如下所述。
配置行编号
请注意,在 ArcGISGeoEvent.cfg 文件中,每个 wrapper.java.additional 属性行具有一个与之关联的数字,对于第一个属性,数字为 1,然后从该数字开始递增:
wrapper.java.additional.1=-Dkaraf.home="%KARAF_HOME%"
wrapper.java.additional.2=-Dkaraf.base="%KARAF_BASE%"
这些索引号非常重要,必须保持排序准确。 添加或注释各个行时,确保检查各个索引以保证准确。
使用 JMX 监控 GeoEvent Server
JMX 是 Java 管理扩展模块,用于实施管理和监控 Java 应用程序的管理接口。 如果您需要监视 GeoEvent Server 的运行状况,此模块非常有用。 可通过将以下代码行添加到配置文件来启用 JMX。
#Uncomment to enable jmx settings
wrapper.java.additional.n=-Dcom.sun.management.jmxremote.port=1009
wrapper.java.additional.n=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.n=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.n=-Dcom.sun.management.jmxremote.local.only=false
# Uncomment to enable jmx settings
wrapper.java.additional.n=-Dcom.sun.management.jmxremote.port=1009
wrapper.java.additional.n=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.n=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.n=-Dcom.sun.management.jmxremote.local.only=false
您必须将上面几行中的 n 替换为给定参数的索引号。 请参阅以下示例:
# Minimum and Maximum Java Heap Sizes
wrapper.java.additional.13=-Xms1g
wrapper.java.additional.14=-Xmx4g
# Uncomment to enable jmx settings
wrapper.java.additional.15=-Dcom.sun.management.jmxremote.port=1009
wrapper.java.additional.16=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.17=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.18=-Dcom.sun.management.jmxremote.local.only=false
配置 JMX 身份验证
上面的示例提供了对 JMX 界面的访问,无需任何身份验证。 猜测正确 JMX 端口的任何人都可以访问 JMX 数据。 因此,建议实施适当的身份验证方案,如 Java 管理扩展模块文档的使用密码和访问文件部分所述。
启动时控制输入
您可以将 GeoEvent Server 配置为在 GeoEvent Server 启动时停止所有输入。 将以下属性添加到配置文件,并将其值设置为 true,可确保 GeoEvent Server 启动时,所有输入将处于停止状态。
wrapper.java.additional.n=-DSTOP_INPUTS_ON_STARTUP=true
再次确保使用如上所述的正确索引。
注:
此属性在可能频繁启动和停止 GeoEvent Server 的开发环境中非常有用,因为您想确保 GeoEvent 服务中的元素已准备就绪,可以接收和处理事件数据。 在生产系统中,此设置需要有人在接收任何数据之前启动输入。 考虑到系统重新启动的自动化程度和高可用性,似乎不太可能需要人为干预。
Java 内存(堆)大小
在 Linux 和 Windows 操作系统上,ArcGIS GeoEvent Server 在 Java 虚拟机 (JVM) 实例中运行。 开箱即用的默认配置仅将 4GB 的服务器可用 RAM 分配给此 JVM。 需要从此分配中获取 RAM 的所有 GeoEvent Server 操作包括但不限于:
- 地理围栏存储
- 事件缓存,例如字段丰富器处理器
- 事件检测
- 需要状态缓存的分析,例如追踪间距检测、入口和出口
- 在高速下处理大量数据时的常规性能
监控 GeoEvent Server 性能时,您可能会注意到它通常会消耗其最大的内存量(默认为 4GB RAM)。 或者,您可能会注意到可以加载的地理围栏数必须小于所需数量。 在这种情况下,您可以增加分配给 GeoEvent Server 的 RAM 数量。
在系统中分配 RAM 时,请考虑计算机上可能正在运行的所有应用程序。 在理想情况下仅安装 GeoEvent Server 应用程序的生产环境中,可以合理地预期会向 GeoEvent Server 分配计算机总内存的很大一部分。 在 GeoEvent Server 可能是已安装的几个应用程序之一的开发环境中,应在各种应用程序之间仔细分配内存。 即使在专用计算机上,也无法将所有内存分配给 GeoEvent Server。 对此,有两个原因。 第一个原因是操作系统性能;操作系统的各个组件都需要内存才能各行其职。 建议您为操作系统提供大约 25% 的内存资源。 第二个原因是最大 JVM 内存设置为 32GB;Windows 将 JVM 的内存限制为不超过 32GB,因此无需将其设置为高于 32GB。
除了设置 JVM 可以消耗的最大内存量之外,还可以设置最小启动内存分配。 启动 Java 时,最初将分配此最小内存量。 随着其消耗的内存增加,将分配更多的内存,直到达到最大内存分配。 增加内存的过程中可能占用较大内存,因此会导致 GeoEvent Server 在此内存分配期间暂停。 因此,计划将最小启动内存设置为尽可能接近或大于最终内存消耗。
如果系统管理员已确认计算机具有足够的可用 RAM 并确定 GeoEvent Server 开发需要将更多的 RAM 分配给运行 GeoEvent Server 的 JVM 实例,则管理员可以按照以下步骤将更多 RAM 分配给托管 JVM 以增加 GeoEvent Server 的可用内存。
- 停止 ArcGIS GeoEvent Server 服务。
在 Windows 中,确保 ArcGIS GeoEvent Server 服务及其关联的 java.exe 进程均已停止。
- 浏览至 ArcGIS GeoEvent.cfg 文件,并以管理员身份在文本编辑器中将其打开。
在 Windows 中,该文件位于 GeoEvent Server 安装目录的 etc 文件夹中。 默认目录位置为 C:\Program Files\ArcGIS\Server\GeoEvent\etc。
- 找到最小和最大 Java 堆大小块。
注:
根据您正在使用的 GeoEvent Server 版本,JVM 参数的索引可能与下图不同。 下面列出的默认和示例分配以千兆字节 (GB) 为单位。
- 将 -Xmx 属性设置为最大大小以限制 JVM 内存。 请参阅以下示例:
- 保持默认值 4GB - wrapper.java.additional.[index]=-Xmx4g
- 设置为 16GB - wrapper.java.additional.[index]=-Xmx16g
- 设置为 32GB - wrapper.java.additional.[index]=-Xmx32g
- 将 -Xms 属性设置为 JVM 内存的最小启动大小。 请参阅以下示例:
- 保持默认值 1GB - wrapper.java.additional.[index]=-Xms1g
- 设置为 4GB - wrapper.java.additional.[index]=-Xms4g
- 设置为 16GB - wrapper.java.additional.[index]=-Xms16g
- 将 -Xmx 属性设置为最大大小以限制 JVM 内存。 请参阅以下示例:
- 保存 ArcGIS GeoEvent.cfg 文件并关闭文本编辑器。
- 启动 ArcGIS GeoEvent Server Windows 服务。
使用系统管理工具,验证 GeoEvent Server 的 JVM 实例(java.exe 进程)消耗的内存是否永远小于在 ArcGISGeoEvent.cfg 配置文件中分配的内存,以及现在可用于 GeoEvent Server 操作的内存是否大于默认值 4GB。