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,因此操作系统无法从内存映射文件中释放内存.
这可能是由于 SOLR 对目录使用的新默认策略(它尝试将它们映射到 RAM 或类似的东西)。