У меня есть небольшой набор запросов и сущностей, и хотя производительность довольно плохая, я просто хотел бы знать, какие трюки и конфигурации я могу сделать, чтобы повысить производительность?
Обратите внимание, что я использую Solr 4.1.
У меня есть небольшой набор запросов и сущностей, и хотя производительность довольно плохая, я просто хотел бы знать, какие трюки и конфигурации я могу сделать, чтобы повысить производительность?
Обратите внимание, что я использую Solr 4.1.
Вы должны попытаться свести к минимуму количество коммитов во время импорта. Даже если вы не выполняете фиксацию периодически при добавлении документов в Solr, Solr выполнит автоматическую фиксацию на основе настроек автоматической фиксации solrconfig.xml:
<autoCommit>
<maxDocs>10000</maxDocs>
<maxTime>15000</maxTime>
<openSearcher>false</openSearcher>
</autoCommit>
Увеличьте maxDocs
и maxTime
и посмотрите, улучшится ли скорость. (maxTime
указывается в миллисекундах, поэтому значение по умолчанию составляет всего 15 секунд, что очень мало для массового импорта.)
Вы даже можете попробовать отключить автоматическую фиксацию во время массового импорта и выполнить одну команду фиксации после добавления всех ваших документов. Если это не приведет к исключению нехватки памяти от Solr, это лучшая скорость, которую вы можете получить.
Если бы вы выполняли импорт РСУБД, то я бы предложил захватить как можно больше полей с помощью JOIN и минимизировать количество подсущностей, поскольку каждая подсущность открывает отдельное соединение с БД. Поскольку вы импортируете из монго, это к вам не относится. Вы можете поэкспериментировать, создав новую коллекцию mongo со всеми данными, которые вам нужны для Solr, сохранить один объект в вашем средстве импорта данных и посмотреть, улучшит ли это скорость импорта.