Memory 在Tomcat上,Windows操作系统会消耗所有内存
更新 我已经配置了xms(初始内存)和xmx(最大内存分配jvm参数),重启后我连接了Visual VM以监控Tomcat内存使用情况。在索引过程运行时,Tomcat的内存使用情况似乎正常,内存消耗在定义的jvm参数范围内。(见图)Memory 在Tomcat上,Windows操作系统会消耗所有内存,memory,solr,jvm,tomcat7,jvm-arguments,Memory,Solr,Jvm,Tomcat7,Jvm Arguments,更新 我已经配置了xms(初始内存)和xmx(最大内存分配jvm参数),重启后我连接了Visual VM以监控Tomcat内存使用情况。在索引过程运行时,Tomcat的内存使用情况似乎正常,内存消耗在定义的jvm参数范围内。(见图) 因此,文件系统缓冲区似乎正在消耗所有剩余内存,而不会丢弃内存?有没有办法处理这种行为,如更改nGram大小或directoryFactory 我对Solr和Tomcat很陌生,但现在我们开始: 操作系统Windows server 2008 4中央处理器 8GB
因此,文件系统缓冲区似乎正在消耗所有剩余内存,而不会丢弃内存?有没有办法处理这种行为,如更改nGram大小或directoryFactory
我对Solr和Tomcat很陌生,但现在我们开始: 操作系统Windows server 2008
- 4中央处理器
- 8GB内存
- 只运行Solr
- 未设置可选的JVM参数,但通过GUI进行Solr配置
- 一个核心实例(用于查询和索引)
- minGramSize=“2”maxGramSize=“20”
- 大多数字段都存储为=“true”(必填)
- 兰布费西泽姆:100
- 最大索引:8
- 目录工厂:MMapDirectory
- 自动提交:maxdocs 10000,maxtime 15000,opensearcher false
- 缓存(默认值):
过滤器缓存初始大小:512大小:512自动预热:0
queryresultcache初始大小:512大小:512自动预热:0
documentcache初始大小:512大小:512自动预热:0
谢谢您可以在tomcat上设置JVM内存设置。我通常使用tomcat的bin目录中的setenv.bat文件(与catalina.bat/.sh文件的目录相同)进行设置 根据需要调整以下值:
set JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx512m"
以下是关于它的明确说明:
http://wiki.razuna.com/display/ecp/Adjusting+Memory+Settings+for+Tomcat
首先,您必须设置XMX参数以限制Tomcat可以使用的最大内存。但是在SOLR的情况下,您必须记住,它使用JVM之外的大量内存来处理文件系统缓冲区。因此,在这种情况下,Tomcat的可用内存决不能超过50%。我有以下设置(尽管问题小得多)。。。 5000个文档,文档大小从1MB到30MB不等。 我们需要在2GB系统上运行1GB以下的Tomcat进程 经过一段时间的实验,我为JAVA设计了这些设置
-Xms448m
-Xmx768m
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:ParallelCMSThreads=4
-XX:PermSize=64m
-XX:MaxPermSize=64m
-XX:NewSize=384m
-XX:MaxNewSize=384m
-XX:TargetSurvivorRatio=90
-XX:SurvivorRatio=6
-XX:+CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=55
-XX:+UseCMSInitiatingOccupancyOnly
-XX:+OptimizeStringConcat
-XX:+UseCompressedOops
-XX:MinHeapFreeRatio=5
-XX:MaxHeapFreeRatio=5
这些都有帮助,但我遇到了OutOfMemory和Tomcat使用太多内存的问题,即使数据集很小
到目前为止,我设置的解决方案或事物/配置似乎保持良好,如下所示:
如果您找到更好的解决方案/配置更改,请告知我们。您能否发布缓存的设置,这可能是问题所在。