Solr使用太多内存

rjd*_*eux 10 solr jvm memory-leaks mmap

我们在Windows 2008 R2上运行的Solr 3.4实例与Oracle Java 6 Hotspot JDK一起变得没有响应.当我们查看机器时,我们注意到可用的物理内存为零.

Tomcat7.exe进程使用~70Gigs(私有工作集),但工作集(内存)正在使用系统上的所有内存.Tomcat/Solr日志中没有错误.我们使用VMMap来识别内存是否用于映射Solr segement文件的内存.

重启Tomcat会暂时解决问题,但最终还是回来了.

然后我们尝试减小JVM大小以为内存映射文件提供更多空间,但随后Solr最终对100%的旧代没有响应.再次重置修复了问题,但在重置之前它没有抛出内存不足异常.

目前我们的蜘蛛侠意识告诉我们,当存在内存压力时,缓存不会缩小,并且可能存在太多MappedByteBuffers,因此操作系统无法从内存映射文件中释放内存.

Fer*_*lva 0

这可能是由于 SOLR 对目录使用的新默认策略(它尝试将它们映射到 RAM 或类似的东西)。

阅读此内容:
http://grokbase.com/t/lucene/solr-user/11789qq3nm/virtual-memory-usage-increases-beyond-xmx-with-solr-3-3