codecamp

在Solr中使用JMX

Java 管理扩展(Java Management Extensions,JMX)是一种技术,它使复杂的系统能够被工具所控制,而系统和工具之间没有任何相互的了解。从本质上讲,它是一个标准的接口,通过它可以查看和操纵复杂的系统。

Solr和Java组成中的其他优秀成员一样,可以通过JMX接口进行控制。一旦启用,您可以使用JMX客户端(如jconsole)与Solr进行连接。

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

配置JMX

JMX支持通过定义度量reporter进行配置,如“ JMX Reporter”一节中所述。

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

配置MBean服务器

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

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

配置到Solr JMX的远程连接

如果您需要将启用JMX的Java分析工具(如JConsole或VisualVM)附加到远程Solr服务器,则需要在启动Solr服务器时启用远程JMX访问。只需将 solr.in.sh 或 solr.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。

注意:将JMX连接到运行在NAT之后的机器(例如,Amazon的EC2服务)并不是一件简单的事情。该java.rmi.server.hostname系统属性可能会有帮助,但是在服务器上运行jconsole 并使用远程桌面通常是最简单的解决方案。请参阅:http://web.archive.org/web/20130525022506/http://jmsbrdy.com/monitoring-java-applications-running-on-ec2-i
Solr度量标准报告
MBean请求处理程序
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

SolrCloud

SolrCloud配置和参数

如何使用AsciiDoc

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }