BitTigerio 2018-01-16
几乎已经搜遍了整个网络,没有找到一篇解决设置solr在Tomcat下设置虚拟机内存的文章。
因为之前一直是在Tomcat中设置zkhost参数,在加上jvm参数后会无法启动,添加其他参数也没有生效。
后来在Apache官网找到可以将zkhost参数放在solr.xml中。
https://lucene.apache.org/solr/guide/6_6/format-of-solr-xml.html
方法:
1、打开配置文件solr.xml,加入
<str name="zkHost">${zkHost:127.0.0.1:2181,127.0.0.1:2182,127.0.0.1:2183}</str>
2、在catalina.bat 中加入(以Windows为例)
set JAVA_OPTS= -Xms1024m -Xmx1024m
3、重新启动solr,发现启动后的jvm内存配置就已经生效了
原因总结:
在Tomcat启动中将zkhost参数使用 JAVA_OPTS 设置后,再添加 -Xms 参数会导致solr在启动时读取配置错误,会报无法解析该字符串的错。
GCRoot 无法追踪到此对象,导致此对象无法被回收。默认的jvm 运行参数 -Xms 。因此给jvm分配的内存比较小。结果就是,运行了几分钟,用top命令查看,java 的 cpu使用率为 99%。