与 Solr 结合使用 JMX

Java 管理扩展 (JMX) 是一项技术,使复杂系统能够由工具控制,而系统和工具彼此之间无需任何先验知识。从本质上讲,它是一个标准接口,可以通过该接口查看和操作复杂系统。

与 Java 宇宙中的任何其他优秀公民一样,Solr 可以通过 JMX 接口进行控制。启用后,您可以使用 JMX 客户端(如 jconsole)连接到 Solr。

如果您不熟悉 JMX,您可能会发现以下概述很有用:http://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html

配置 JMX

JMX 支持通过定义指标报告程序进行配置,如部分 JMX 报告程序 中所述。

如果您在 Solr 的 JVM 中运行现有的 MBean 服务器,或者使用系统属性 -Dcom.sun.management.jmxremote 启动 Solr,即使您尚未在 solr.xml 中明确定义报告程序,Solr 也会在启动时自动识别其位置。您还可以使用报告程序定义中定义的参数定义 MBean 服务器的位置。

配置 MBean 服务器

7.0 之前的 Solr 版本在 solrconfig.xml 中定义了 JMX 支持。这已更改为上面定义的指标报告程序配置。报告程序配置的参数允许定义现有 MBean 服务器的位置或地址。

可以通过传递系统参数 -Dcom.sun.management.jmxremote 在 Solr 启动时启动 MBean 服务器。请参阅 Oracle 文档以了解在 http://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html 启动和控制 MBean 服务器时可用的其他设置。

配置与 Solr JMX 的远程连接

如果你需要将启用了 JMX 的 Java 分析工具(如 JConsole 或 VisualVM)附加到远程 Solr 服务器,则需要在启动 Solr 服务器时启用远程 JMX 访问。只需将 solr.in.shsolr.in.cmd(适用于 Windows)文件中的 ENABLE_REMOTE_JMX_OPTS 属性更改为 true 即可。你还需要为 JMX RMI 连接器选择一个端口以进行绑定,例如 18983。例如,如果你的 Solr 包含脚本设置

ENABLE_REMOTE_JMX_OPTS=true
RMI_PORT=18983

JMX RMI 连接器将允许 Java 分析工具附加到端口 18983。启用后,在启动 Solr 时会将以下属性传递给 JVM

-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.port=18983 \
-Dcom.sun.management.jmxremote.rmi.port=18983

我们不建议在生产环境中启用远程 JMX 访问,但在投入生产之前进行性能和用户验收测试时,它有时会很有用。

有关这些设置的更多信息,请参阅:http://docs.oracle.com/javase/8/docs/technotes/guides/management/agent.html

在运行 NAT(例如 Amazon 的 EC2 服务)的机器中建立 JMX 连接并非易事。java.rmi.server.hostname 系统属性可能有所帮助,但通常最简单的解决方案是在服务器本身上运行 jconsole 并使用远程桌面。请参阅 http://web.archive.org/web/20130525022506/http://jmsbrdy.com/monitoring-java-applications-running-on-ec2-i