2010-10-13 12 views
1

J'ai un serveur de 64 bits, 8 Go de RAM, CPU double quadruple. Aucune ressource ne frappe 100% (sauf, je suppose, la JVM - non?).Comment indexer les enregistrements dans Solr plus rapidement (et non sur le serveur web ColdFusion)? Deux JVM?

J'ai besoin d'indexer plusieurs millions d'enregistrements pour Solr, mais la machine est en production. Je reconnais avoir une deuxième machine pour l'indexation serait utile.

Devrais-je dédier une seconde instance de la JVM, dédiée à Solr?

À l'heure actuelle, lorsque j'exécute un index, les pages qui sont normalement servies en 200 millisecondes se libèrent en environ 1,5 seconde, parfois plus ... en frappant, même, l'erreur redoutée "Service is Unavailable".

J'ajusté ma Heap machine virtuelle Java comme suit:

-Xmx1024m 
-XX:MaxPermSize256m 

Dans le cas où je chasse la mauvaise solution, permettez-moi d'élargir le paysage un peu. Il semble que je ne peux pas affecter la vitesse d'indexation de Solr. J'avais précédemment indexé environ 150 000 enregistrements par heure sur un serveur de développement virtualisé sur un poste de travail. Dans un environnement de production avec beaucoup plus de matériel disponible, j'indexe exactement à la même vitesse.

Sans données pour le prouver, je pense que mes ajustements JVM n'ont pas accéléré l'indexation, bien qu'il ait pu permettre au serveur CF de continuer à servir des pages. Je dois dire que la vitesse d'indexation est terriblement lente, mais je sais que ce n'est pas une fonction de la couche d'accès aux données. Je l'ai réécrit de ORM pur à des objets soutenus par des procédures stockées SQL en pensant que c'était le ralentissement (aucun effet).

+0

Clarification: le processus d'index est HTTP Post (non incorporé). –

+0

vous ne devriez pas indexer beaucoup de données fréquemment, n'est-ce pas? Vous pouvez utiliser action = mise à jour – Henry

+0

Correct, Henry, ce sera probablement un lot mensuel (nouvelles importations de données, certaines mises à jour de données). –

Répondre

3

utiliser une instance distincte pour l'indexation de l'indice, le seul truc devient l'instance en cours de recherche de relire l'index mis à jour, auquel cas, vous mettre en place un maître (l'indexeur) et l'esclave (le chercheur) et faire la réplication. ceci rendra le chercheur non interrompu, et l'indexeur utilisera sa propre JVM, y compris sa propre part des ressources.

+0

Excellent. Je pensais que je ne pouvais pas avoir une JVM pour l'indexation et avoir un travail de recherche. Tu m'as donné le lien manquant. Merci! –

1
+0

Je vois par mes couleurs de lien visité que j'ai été sur le premier, mais pas le second deux. Je vais vérifier ça. Merci! Mon espoir est que je peux investir quelques heures pour trouver une bonne astuce qui retournera plusieurs heures de temps d'indexation diminué. Merci encore. –