Uso da memória Tomcat Solr

4

Estou executando o servidor solr no tomcat no servidor linux, quando eu uso o comando top eu vejo o "VIRT" muito alto

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 4786 root      20   0 19.6g 3.8g  10m S  200 15.9   8:26.13 java
 1808 root      20   0 6437m 162m 4740 S    2  0.7 101:08.75 java
 4889 root      20   0 19352 1580 1064 R    1  0.0   0:00.08 top
31700 mysql     20   0 6677m 5.2g 4468 S    0 22.0 470:51.49 mysqld
    1 root      20   0 23708 1464  972 S    0  0.0   0:23.06 init

Qual poderia ser o motivo para isso ou como eu posso traçar o perfil dele?

    
por MDMarra 28.10.2011 / 16:44

1 resposta

3

O motivo pelo qual você está vendo um uso tão alto da memória virtual é que o Solr usa o MMapFSDirectory como a classe padrão para manipular o índice do Lucene. Esta classe tentará mapear quaisquer índices sob o controle Solr para a memória virtual - quanto mais núcleos / índices, pior fica. A parte divertida é que isso está fora do conhecimento / controle da JVM. A JVM relatará apenas a memória (-Xms: 128m -Xmx: 1024m, por exemplo) min / max especificada para o contêiner de servlet. Teria sido bom para eles avisarem as pessoas ou usarem uma DirectoryFactory mais conservadora como padrão.

Altere a linha no seu solrconfig.xml:

directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"

para apontar para algo como NIOFSDirectoryFactory.

    
por 09.11.2011 / 05:28