Hi (again) people

We've now invested in a server with 8 GB of RAM after too many OutOfMemory-errors.

Our database/index is 3.5 GB and contains 4,352,471 documents. Most documents are less than 1 kb. When performing a search, the results vary between 1.5 seconds up to 60 seconds.

I don't have a big problem with 1.5 seconds (even though below 1 would be nice), but 60 seconds it just.. well, scary.

How do I optimize Solr to better use all the RAM? I'm using java6, 64bit version, and start Solr using:
java -Xmx7500M -Xms4096M -jar start.jar

But according to top it only seems to be using 7.7% of the memory (around 600 MB).

Most queries are for make_id + model_id or city + state and almost all of the queries are ordered by datetime_found (newest -> oldest).

from schema.xml:
<field name="ad_id" type="sint" indexed="true" stored="true" required="true" /> <field name="make_id" type="sint" indexed="true" multiValued="false" /> <field name="model_id" type="sint" indexed="true" multiValued="false" /> <field name="model_group_id" type="sint" indexed="true" multiValues="true" /> <field name="zip_code" type="sint" indexed="true" multiValued="false" />
   <field name="year" type="sint" indexed="true" multiValued="false" />
<field name="mileage" type="sint" indexed="true" multiValued="false" /> <field name="cylinders" type="sint" indexed="true" multiValued="false" /> <field name="doors" type="sint" indexed="true" multiValued="false" /> <field name="price" type="sfloat" indexed="true" multiValued="false" /> <field name="headline" type="text" indexed="true" multiValued="false" /> <field name="description" type="text" indexed="true" multiValued="false" /> <field name="condition" type="text" indexed="true" multiValued="false" /> <field name="sell_type" type="text" indexed="true" multiValued="false" />
   <field name="city" type="text" indexed="true" multiValued="false" />
<field name="state" type="text" indexed="true" multiValued="false" /> <field name="alt_location" type="text" indexed="true" multiValued="false" /> <field name="address" type="text" indexed="true" multiValued="false" /> <field name="image_exists" type="boolean" indexed="true" multiValued="false" /> <field name="vehicle_type" type="text" indexed="true" multiValued="false" /> <field name="datetime_found" type="date" indexed="true" multiValued="false" /> <field name="transmission" type="text" indexed="true" multiValued="false" /> <field name="color" type="text" indexed="true" multiValued="false" /> <field name="interior" type="text" indexed="true" multiValued="false" /> <field name="private_seller" type="boolean" indexed="true" multiValued="false" />
   <field name="fuel" type="text" indexed="true" multiValued="false" />
<field name="ac" type="boolean" indexed="true" multiValued="false" /> <field name="cruise_control" type="boolean" indexed="true" multiValued="false" />
   <field name="lat" type="sdouble" indexed="true" stored="true" />
   <field name="lng" type="sdouble" indexed="true" stored="true" />
<dynamicField name="_local*" type="sdouble" indexed="true" stored="true" multiValued="false" />

<!-- catchall field, containing all other searchable text fields (implemented
        via copyField further on in this schema  -->
<field name="text" type="text" indexed="true" stored="false" multiValued="true"/>

   <copyField source="headline" dest="text"/>
   <copyField source="description" dest="text"/>
   <copyField source="color" dest="text"/>


from solrconfig.xml:
    <filterCache
      class="solr.LRUCache"
      size="4096"
      initialSize="4096"
      autowarmCount="2048"/>

    <queryResultCache
      class="solr.LRUCache"
      size="4096"
      initialSize="4096"
      autowarmCount="2048"/>

    <documentCache
      class="solr.LRUCache"
      size="4096"
      initialSize="4096"
      autowarmCount="0"/>

    <queryResultWindowSize>50</queryResultWindowSize>

    <queryResultMaxDocsCached>1000</queryResultMaxDocsCached>

    <HashDocSet maxSize="2000" loadFactor="0.75"/>
    <listener event="newSearcher" class="solr.QuerySenderListener">
      <arr name="queries">
<lst> <str name="q">datetime_found</str> <str name="start">0</ str> <str name="rows">10</str> </lst>
      </arr>
    </listener>

    <listener event="firstSearcher" class="solr.QuerySenderListener">
      <arr name="queries">
<lst> <str name="q">datetime_found</str> <str name="start">0</ str> <str name="rows">10</str> </lst>
      </arr>
    </listener>

    <useColdSearcher>true</useColdSearcher>
    <maxWarmingSearchers>6</maxWarmingSearchers>

Any help much appreciated!

Kind regards,
Daniel

Reply via email to