2010-09-30 15 views
2

J'utilise SOLR pour indexer des documents dans mon application Web et solr.war est déployé sur le serveur jboss. Mais lors de l'indexation, je reçois trop de fichiers ouverts exception. Ci-dessous quelques exceptions trace de la pile:Trop d'exception de fichier ouvert lors de l'indexation avec solr

12:31:33,267 ERROR [STDERR] Exception in thread "Lucene Merge Thread #0" 
12:31:33,267 ERROR [STDERR] org.apache.lucene.index.MergePolicy$MergeException: java.io.FileNotFoundException: /data/jbossesb/bin/solr/data/index/_2rw.prx (Too many open files) 
12:31:33,267 ERROR [STDERR] at org.apache.lucene.index.ConcurrentMergeScheduler.handleMergeException(ConcurrentMergeScheduler.java:351) 
12:31:33,267 ERROR [STDERR] at org.apache.lucene.index.ConcurrentMergeScheduler$MergeThread.run(ConcurrentMergeScheduler.java:315) 
12:31:33,267 ERROR [STDERR] Caused by: java.io.FileNotFoundException: /data/jbossesb/bin/solr/data/index/_2rw.prx (Too many open files) 
12:31:33,267 ERROR [STDERR] at java.io.RandomAccessFile.open(Native Method) 

Répondre

2

File Descriptor sera votre cause la plus probable.

Vérifiez la limite définie par votre système d'exploitation. et ajuster selon. sous Unix, la commande à afficher et à définir est ulimit.

+0

Salut, pouvez-vous nous expliquer comment vous pouvez définir cette valeur maximale avec ulimit pour un utilisateur spécifié? Je recherche sur un couple de sites, mais je n'ai pas trouvé la bonne commande :( –

+1

**/etc/security/limits.conf ** --- meilleur endroit pour définir ulimit basé sur l'utilisateur – raksja

4

Comme expliqué dans ce SOLR Jira, vous pouvez essayer les options suivantes:

  • augmenter votre ulimit en utilisant: ulimit -n 1000000
  • mis useCompoundFile à true dans solrconfig.xml utiliser le format de fichier composé de Lucene
  • utiliser un bas mergeFactor ce qui se traduira par moins de segments et donc moins de fichiers ouverts.
0

Optimisez l'index. Il a probablement trop de segments.

0

Également essayer de réduire le facteur de fusion