JMV的虚拟内存大小测试
原因
在Solr集群的实例中,因为没有给Solr实例分给足够大的内存,导致Solr在并发测试时,内存不够,溢出了。虽然,Solr有自动释放内存,但是却并未达到预期结果。最终还是溢出。于是我们尝试给Solr分配更大的内存空间,增大JMV的内存,让Solr更好的运行。虽然治标不治本,Solr的官方Api里也是这样说道
first try to reclaim any available space that already exists in the heap. Only if all garbage collection attempts fail will
your application see an exception. As long as the maximum is big enough, your app will run without error, but it may
run more slowly if forced garbage collection kicks in frequently.首先尝试回收堆中已经存在的可用空间。除非所有的垃圾收集尝试失败
您的应用程序会看到异常。只要你的内存足够大,你的应用程序就不会出错,但可能会出错 如果频繁地进行强制垃圾收集,则运行得更慢。
增大JVM的内存,让Solr获得更大收益
可以设置的最大JVM内存大小与JVM的版本以及操作系统版本有关,JVM使用的最大内存一般Windows下1200-1500M左右,这取决与JDK的版本
测试命令如下:
* java -Xmx1260M -version*
测试时更改“1260”就可以了JDK1.5.0_11最大值是1430兆,Linux下最大能到2600M。
解决方案
增大JVM的内存
总结
在这采取的方法是增大JVM的内存,让Solr获得最大的收益,虽然比较笨,但是还是有一定的效果。
虽然关于Solr的优化不是一朝一夕的事情,网上的说法众多纷纭,各有个的说法,有关于日志阻塞,线程阻塞等问题,总之,优化需要在长期的积累,一切只有迎难而上了。